Ich habe ein Projekt mit einer großen C++ - Komponente, die ich erfolgreich mit CLAM unter OSX kompilieren konnte (Apple LLVM Version 6.1.0 (clang-602.0.49)) (basierend auf LLVM 3.6.0svn .) Da OSX ein Fortran-Compiler bietet keine installiert ich gfortran über HomebrewLink OSX Homebrew Gfortran gegen libC++
Compilation funktioniert gut, aber ich kann die kompilierte Fortran-Code gegen den C früher ++ kompiliert Code nicht verknüpfen. ich erhalte den folgenden Fehler:
$ make fortran
Undefined symbols for architecture x86_64:
"std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::compare(char const*) const", referenced from:
DataFieldInfo::FromJSON(JSONNode const&) in [...]
"std::__1::__vector_base_common<true>::__throw_length_error() const", referenced from:
std::__1::vector<char, std::__1::allocator<char> >::allocate(unsigned long) in [...]
void std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > >::__push_back_slow_path<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const>(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) in [...]
void std::__1::vector<JSONNode, std::__1::allocator<JSONNode> >::__push_back_slow_path<JSONNode const>(JSONNode const&) in [...]
[...]
Das zeigt mir, dass ich ein Linking-Problem zwischen dem Fortran und dem C++ Teil habe.
Wie verbinde ich Fortran Teil mit libC++? Ist dies mit gfortran von Homebrew möglich? Was wäre die beste Vorgehensweise, um dieses Problem zu lösen? Sollte ich versuchen, mit clang ++ zu verknüpfen?
Haben Sie '-lstdC++' versucht? –
Ich musste -lC++ zum Linker hinzufügen (siehe caseys Antwort unten). – Pascal
Ich vermute, dass du das vorher probiert hast ... –