Unterschied beim kompilieren mit Xcode und gcc?
-
Hey,
ich bin noch am lernen von C++, aber mir ist aufgefallen, das wenn ich meine Code mit Xcode kompiliere keine Fehler auftreten, als ich dasselbe dann aber unter dem Terminal mit gcc probiert habe, tarten Fehler auf, die ich nicht nachvollziehen kann, am Ende heißt e z.B.ld: symbol(s) not found for architecture x86_64
collect2: ld returned 1 exit statusIch benutze nur die Standartbibliotheken, falls der Code gewünscht ist, kann ich ihn nachreichen.
Ich freue mich über eine Antwort,
MCplusplus.
-
MCplusplus schrieb:
Ich benutze nur die Standartbibliotheken, falls der Code gewünscht ist, kann ich ihn nachreichen.
Besser wäre erstmal die genaue Fehlermeldung. Der Linker sagt auch welche Sysmbole nicht gefunden wurden.
-
Dieser Thread wurde von Moderator/in rüdiger aus dem Forum Rund um die Programmierung in das Forum Compiler- und IDE-Forum verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Die genaue Fehlermeldung des gcc-Compilers ist:
Undefined symbols for architecture x86_64:
"std::basic_string<char, std::char_traits<char>, std::allocator<char> >::size() const", referenced from:
std::__verify_grouping(char const*, unsigned long, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)in ccsGVbhH.o
"std::basic_string<char, std::char_traits<char>, std::allocator<char> >::operator[](unsigned long) const", referenced from:
std::__verify_grouping(char const*, unsigned long, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)in ccsGVbhH.o
"std::ios_base::Init::Init()", referenced from:
__static_initialization_and_destruction_0(int, int)in ccsGVbhH.o
"std::ios_base::Init::~Init()", referenced from:
___tcf_0 in ccsGVbhH.o
"std::cin", referenced from:
Token_stream::get() in ccsGVbhH.o
_main in ccsGVbhH.o
keep_window_open() in ccsGVbhH.o
"std::basic_istream<char, std::char_traits<char> >::get()", referenced from:
keep_window_open() in ccsGVbhH.o
"std::cerr", referenced from:
_main in ccsGVbhH.o
error(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)in ccsGVbhH.o
"std::basic_ostream<char, std::char_traits<char> >& std::operator<< <char, std::char_traits<char>, std::allocator<char> >(std::basic_ostream<char, std::char_traits<char> >&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)", referenced from:
error(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)in ccsGVbhH.o
"std::basic_ostream<char, std::char_traits<char> >& std::endl<char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&)", referenced from:
error(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)in ccsGVbhH.o
"std::basic_ostream<char, std::char_traits<char> >::operator<<(std::basic_ostream<char, std::char_traits<char> >& ()(std::basic_ostream<char, std::char_traits<char> >&))", referenced from:
error(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)in ccsGVbhH.o
"___cxa_allocate_exception", referenced from:
error(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)in ccsGVbhH.o
"std::runtime_error::runtime_error(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)", referenced from:
error(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)in ccsGVbhH.o
"typeinfo for std::runtime_error", referenced from:
error(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)in ccsGVbhH.o
"std::runtime_error::~runtime_error()", referenced from:
error(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)in ccsGVbhH.o
"___cxa_throw", referenced from:
error(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)in ccsGVbhH.o
"___cxa_free_exception", referenced from:
error(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)in ccsGVbhH.o
"std::allocator<char>::allocator()", referenced from:
Token_stream::putback(Token) in ccsGVbhH.o
Token_stream::get() in ccsGVbhH.o
primary() in ccsGVbhH.o
term() in ccsGVbhH.o
"std::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string(char const, std::allocator<char> const&)", referenced from:
Token_stream::putback(Token) in ccsGVbhH.o
Token_stream::get() in ccsGVbhH.o
primary() in ccsGVbhH.o
term() in ccsGVbhH.o
"std::basic_string<char, std::char_traits<char>, std::allocator<char> >::~basic_string()", referenced from:
Token_stream::putback(Token) in ccsGVbhH.o
Token_stream::get() in ccsGVbhH.o
primary() in ccsGVbhH.o
term() in ccsGVbhH.o
"std::allocator<char>::~allocator()", referenced from:
Token_stream::putback(Token) in ccsGVbhH.o
Token_stream::get() in ccsGVbhH.o
primary() in ccsGVbhH.o
term() in ccsGVbhH.o
"std::basic_istream<char, std::char_traits<char> >& std::operator>><char, std::char_traits<char> >(std::basic_istream<char, std::char_traits<char> >&, char&)", referenced from:
Token_stream::get() in ccsGVbhH.o
_main in ccsGVbhH.o
"std::basic_istream<char, std::char_traits<char> >::putback(char)", referenced from:
Token_stream::get() in ccsGVbhH.o
"std::basic_istream<char, std::char_traits<char> >::operator>>(double&)", referenced from:
Token_stream::get() in ccsGVbhH.o
"std::cout", referenced from:
_main in ccsGVbhH.o
"std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)", referenced from:
_main in ccsGVbhH.o
"std::basic_ostream<char, std::char_traits<char> >::operator<<(double)", referenced from:
_main in ccsGVbhH.o
"std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char)", referenced from:
_main in ccsGVbhH.o
"std::basic_ios<char, std::char_traits<char> >::operator void*() const", referenced from:
_main in ccsGVbhH.o
"___cxa_begin_catch", referenced from:
_main in ccsGVbhH.o
"___cxa_end_catch", referenced from:
_main in ccsGVbhH.o
"typeinfo for std::exception", referenced from:
anon in ccsGVbhH.o
"___gxx_personality_v0", referenced from:
Dwarf Exception Unwind Info (__eh_frame) in ccsGVbhH.o
ld: symbol(s) not found for architecture x86_64
collect2: ld returned 1 exit statusKann damit jemand was anfangen?
-
Hast du vielleicht gcc anstelle g++ benutzt? Ansonsten zeig deinen GCC-Aufruf.
-
Zu prüfen wäre noch, ob im Makefile vielleicht folgende Zeilen in der einen oder Form stehen:
CXXFLAGS += -nostartfiles CXXFLAGS += -nodefaultlibs CXXFLAGS += -nostdlib CXXFLAGS += -nostdinc CXXFLAGS += -nostdinc++ CXXFLAGS += -ffreestanding CXXFLAGS += -fno-builtin CXXFLAGS += -fno-common CXXFLAGS += -fno-exceptions CXXFLAGS += -fno-non-call-exceptions
-
rüdiger schrieb:
Hast du vielleicht gcc anstelle g++ benutzt? Ansonsten zeig deinen GCC-Aufruf.
Als blutiger Anfänger habe ich natürlich im Eifer des Gefechts gcc und g++ vertauscht.
Für alle anderen Anfänger, die das selbe Problem haben sollten:
gcc = GNU C Compiler
g++ = GNU C++ CompilerHeißt, gcc bindet so wie ich das verstanden habe nicht automatisch die Standardbibliotheken mit ein, kompiliert aber ansonsten den Code normal.
g++ dagegen kompiliert rein nach C++-Standard, bindet die Standardbibliotheken also auch mit ein.Sollte ich etwas falsch verstanden haben, wäre ich über Richtigstellung
glücklich.
-
C ist ne ganz andere Sprache als C++. Das eine ein C-Compiler, das andere ein C++-Compiler.
Und XCode ist Mist.
-
Und XCode ist Mist
pff nub!!
-
Ein unregistrierter, wie süß
-
314159265358979 schrieb:
C ist ne ganz andere Sprache als C++. Das eine ein C-Compiler, das andere ein C++-Compiler.
Und XCode ist Mist.Das wollte ich damit ausdrücken. Und das C eine andere Sprache als C++ ist, ist mir bekannt.
Und ob Xcode Mist ist, ist denke ich Geschmacksache.
-
XCode
- ist unübersichtlich
- hat keinen C++0x Support
- hat die Compilereinstellungen irgendwo versteckt
- hat keine ordentliche Code CompletionMal ehrlich, bei einer IDE sollte ich nicht stundenlang die Compiler-Flag Settings suchen, das sollte eine Sache von 1 Minute sein. Hier sollte sich Apple mal ein Beispiel an der Eclipse nehmen, auch wenn ich von Apple ansonsten viel halte.
-
314159265358979 schrieb:
Mal ehrlich, bei einer IDE sollte ich nicht stundenlang die Compiler-Flag Settings suchen, das sollte eine Sache von 1 Minute sein. Hier sollte sich Apple mal ein Beispiel an der Eclipse nehmen, auch wenn ich von Apple ansonsten viel halte.
Die wird sofort angezeigt sobald du das Projekt angelegt hast. - btw ich red von XCode 4
-
Same.
-
314159265358979 schrieb:
C ist ne ganz andere Sprache als C++. Das eine ein C-Compiler, das andere ein C++-Compiler.
Und XCode ist Mist.gcc ist auch der C++-Compiler. Der GCC entscheidet anhand der Dateiendung, ob er den Code als C++ oder C behandeln soll. Er linkt aber - wie MCplusplus richtig gesagt hat - standardmäßig nicht die Standard-Library. g++ linkt die Standardbibliothek.
-
Ich zumindest benutze nur g++, und der ist ein C++ Compiler. Da liegt die Vermutung nahe, dass man mit gcc C-Code kompiliert.
-
314159265358979 schrieb:
XCode
- ist unübersichtlich
- hat keinen C++0x Support
- hat die Compilereinstellungen irgendwo versteckt
- hat keine ordentliche Code CompletionMal ehrlich, bei einer IDE sollte ich nicht stundenlang die Compiler-Flag Settings suchen, das sollte eine Sache von 1 Minute sein. Hier sollte sich Apple mal ein Beispiel an der Eclipse nehmen, auch wenn ich von Apple ansonsten viel halte.
Unübersichtlich ist es meiner Ansicht nach nicht, ich persönlich fand da Eclipse schlimmer. Und Xcode hat Funktionen bei der Code Completion, die ich in MVS nicht gefunden habe.
-
314159265358979 schrieb:
Ich zumindest benutze nur g++, und der ist ein C++ Compiler. Da liegt die Vermutung nahe, dass man mit gcc C-Code kompiliert.
Mit dem g++ kannst du auch C-Code kompilieren. Wie bereits gesagt: g++ ruft nur den gcc mit den entsprechenden Parametern für die C++-Standardbibliothek auf.
-
MCplusplus: Wenn dir XCode gefällt, dann bleib dabei. Nur weil hier manche Trolle den "Registrieren"-Button gefunden haben, heißt das noch lange nicht, dass du dir nicht deine Tools selbst aussuchen darfst oder auch nur auf solches Getrolle eingehen musst.
-
Ich bin kein Troll, XCode ist meiner Meinung nach eine absolut beschissene IDE. Das ist meine Meinung, und ich werde XCode auch nicht weiterempfehlen. Wer nach dem nächsten Standard programmieren will, wird damit nicht glücklich.