EDIT2:non definito simbolo “toupper” in MacPorts GCC 4.7 OS-X Mavericks 10,9 C11
ecco un esempio del programma:
#include <stdio.h>
#include <ctype.h>
int main()
{
int i=0;
char str[]="Test String.\n";
char c;
while (str[i])
{
c=str[i];
putchar (toupper(c));
i++;
}
return 0;
}
1) clang:
clang++ -std=c++0x -stdlib=libc++ -lc++ main.cc -o main
compila bene.
2) g++-mp-4.8 -std=c++11 main.cc -o main
dà:
Undefined symbols for architecture x86_64:
"toupper(int)", referenced from:
_main in ccWjHauc.o
ld: symbol(s) not found for architecture x86_64
collect2: error: ld returned 1 exit status
3) g++-mp-4.8 main.cc -o main
compilazioni!
qualsiasi idea cosa c'è di sbagliato nel setup?
==========
Qualcuno può aiutarmi a capire cosa è cambiato in GCC/macports/OS 10.9?
Avevo uno script di compilazione di alcune librerie di terze parti che funzionano su os 10.8. Recentemente ho aggiornato al nuovo osx (10.9) e gcc 4.7 da macports interrotto il collegamento. In particolare ho:
Undefined symbols for architecture x86_64:
"isspace(int)", referenced from:
Questo problema è molto simile a quello menzionato here per istype
. Tuttavia sembra che isspace
non sieda in libgcC++. Dylib.
Qualche idea cosa provare?
Edit1:
infatti, 4,8 risolto il problema con isspace
, ma un altro a superficie - toupper
:
Undefined symbols for architecture x86_64:
"toupper(int)", referenced from: ...
Che cosa sta succedendo qui?!. È collegato al nuovo Xcode (5.0)?
hai incluso l'intestazione? –
asalic
sì, il problema è ancora lì. – Denis
btw, a mio avviso, l'assenza dell'intestazione porterebbe a un errore di compilazione in contrasto con l'errore di collegamento – Denis