Ich versuche, ein C++ zu bauen und zu verknüpfen, cmake-basiertes Projekt mit Klirren (3.0). Dieses Projekt ist mit mehreren Bibliotheken verknüpft, die in einem benutzerdefinierten Verzeichnis/my/dir/installiert sind. Dieses Verzeichnis ist in den Umgebungsvariablen LD_LIBRARY_PATH und LIBRARY_PATH enthalten. Projekt baut und verlinkt gut mit g ++.Clang Linker sieht nicht in LD_LIBRARY_PATH
Der Link-Befehl von cmake generiert und ausgeführt sieht wie folgt aus:
/usr/bin/clang++ -O3 stuff.cpp.o -o stuff -rdynamic -lmylib
ld beschwert sich dann mit der folgenden Meldung:
/usr/bin/ld: cannot find -lmylib
Der Link-Befehl über fein läuft, wenn ich -L/my/dir/
manuell hinzufügen . Gibt es eine Möglichkeit, ohne Angabe des Flags -L
zu verknüpfen?
[LD_LIBRARY_PATH'] (http://tldp.org/HOWTO/Program-Library-HOWTO/shared-libraries.html) dient zum Laden von Bibliotheken beim Start, nicht zum Auflösen von Linkabhängigkeiten. Vielleicht möchten Sie 'LDFLAGS' verwenden? –
Interessant. Ich benutze __g ++ __ und __clang ++ __ austauschbar mit CMake aber noch nie ein ähnliches Problem. Ich benutze einfach das Makro 'link_directories()', um den Bibliothekspfad zu definieren. – Hindol