Ich benutze einen Cmake erzeugt Make-Datei eine C++ Datei zu kompilieren, die auf der Boost-Dateisystem-Bibliothek abhängt.Wie verknüpfen gegen Boost.System mit cmake
Während der Verknüpfung ich die folgende Fehlermeldung erhalten:
Undefined symbols: "boost::system::get_generic_category()", referenced from: __static_initialization_and_destruction_0(int, int)in FaceRecognizer.cpp.o __static_initialization_and_destruction_0(int, int)in FaceRecognizer.cpp.o __static_initialization_and_destruction_0(int, int)in FaceRecognizer.cpp.o "boost::system::get_system_category()", referenced from: __static_initialization_and_destruction_0(int, int)in FaceRecognizer.cpp.o __static_initialization_and_destruction_0(int, int)in FaceRecognizer.cpp.o ld: symbol(s) not found collect2: ld returned 1 exit status make[2]: *** [src/ImageMarker] Error 1
Die Aktion von der Make-Datei, die diesen Fehler erzeugt, ist diese Zeile:
cd /Users/janusz/Documents/workspace/ImageMarker/Debug/src && /opt/local/bin/cmake -E cmake_link_script CMakeFiles/ImageMarker.dir/link.txt --verbose=1 /usr/bin/c++ -O3 -Wall -Wno-deprecated -g -verbose -Wl,-search_paths_first -headerpad_max_install_names -fPIC CMakeFiles/ImageMarker.dir/ImageMarker.cpp.o CMakeFiles/ImageMarker.dir/Image.cpp.o CMakeFiles/ImageMarker.dir/utils.cpp.o CMakeFiles/ImageMarker.dir/XMLWriter.cpp.o CMakeFiles/ImageMarker.dir/FaceRecognizer.cpp.o -o ImageMarker -L/opt/local/lib ../libTinyXml.a /opt/local/lib/libboost_filesystem-mt.dylib
Einige Googeln hat mir gezeigt, dass dieser Fehler scheint seine gemeinsam auf macs mit der Boost-Dateisystem-Bibliothek, weil ich gegen eine Boost.System Bibliothek verknüpfen oder mein Projekt machen auf der Boost.System Bibliothek abhängig.
Wie erzwinge ich Cmake gegen die Bibliothek zu verknüpfen, ohne den Bibliothekspfad zu?
Hier das Ergebnis von otool:
otool -L /opt/local/lib/libboost_filesystem-mt.dylib
/opt/local/lib/libboost_filesystem-mt.dylib:
/opt/local/lib/libboost_filesystem-mt.dylib (compatibility version 0.0.0, current version 0.0.0)
/opt/local/lib/libboost_system-mt.dylib (compatibility version 0.0.0, current version 0.0.0)
/usr/lib/libstdc++.6.dylib (compatibility version 7.0.0, current version 7.4.0)
/usr/lib/libgcc_s.1.dylib (compatibility version 1.0.0, current version 1.0.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 111.0.0)
Janusz, bitte tun "otool -L /opt/local/lib/libboost_filesystem-mt.dylib" und geben Sie uns das Ergebnis. Danke. –