9

C++、cmake ベースのプロジェクトを clang (3.0) でビルドしてリンクしようとしています。このプロジェクトは、カスタム ディレクトリ /my/dir/ にインストールされているいくつかのライブラリにリンクしています。このディレクトリは、LD_LIBRARY_PATH および LIBRARY_PATH 環境変数に含まれています。プロジェクトのビルドとリンクは g++ で問題ありません。

cmake によって生成および実行されるリンク コマンドは、次のようになります。

/usr/bin/clang++ -O3 stuff.cpp.o -o stuff -rdynamic -lmylib

ld は、次のメッセージを表示します。

/usr/bin/ld: cannot find -lmylib

上記のリンク コマンドは、手動で追加するたびに正常に実行されます-L/my/dir/-Lフラグを指定せずにリンクする方法はありますか?

4

1 に答える 1

9

$LD_LIBRARY_PATH環境変数 (および他の UNIX ベースのプラットフォームのさまざまな代替変数) は、ライブラリを見つけるために、リンク時ではなく実行時に使用されます。

を使用する-Lことは正しいアプローチであり、避けることはできません。

注:Linuxでのより良いアプローチ(プラットフォームを指定していないので推測しています)は、ファイルを正しく構成し、完全に/etc/ld.so.conf.d/使用しないようにすることです。$LD_LIBRARY_PATH

于 2012-09-25T12:33:13.283 に答える