プロジェクト内のいくつかの動的ライブラリを scons にリンクしたいと考えています。
例:
ソース/main.cpp
ツール/lib/libboost_system.dylib
バイナリの場所
ソース/プログバイナリ
私の問題は、リンク プロセスの後、バイナリが libboost_system.dylib を見つけられないことです。
dyld: ライブラリがロードされていません: libboost_system.dylib
otool -L
問題を示します。パスを修正する小さなスクリプトでこれを修正できます。しかし、私はsconsでこれをやりたいです。
RPATH
Linux では、 in sconsを設定するだけで本当に簡単です。
----- @Brady からのヒントの後
ライブラリに Linkflags を追加します。リンクした後、エラーが発生しました
「g++: エラー: -install_name は -dynamiclib でのみ許可されています」
だから私はコマンドに追加します
LINKFLAGS = '-dynamiclib インストール名 @executable_path/libWhatever.dylib'
そして今、私が私の実行を呼び出すと、メッセージを取得します
「バイナリファイルを実行できません」
と
otool -L
見せて:
@executable_path/tools/lib/libboost_filesystem.dylib (互換バージョン 0.0.0、現行バージョン 0.0.0) libboost_system.dylib (互換バージョン 0.0.0、現行バージョン 0.0.0)
scons からのリンク コマンドは次のようになります。
/opt/local/bin/g++ -o source/prog -dynamiclib -install_name @executable_path/tools/lib/libboost_system.dylib source/main.o -Ltools/lib -lboost_system