libname.so命名規則に従わないライブラリの-lまたはハードコーディングパスなしでGCCを使用してリンクする方法は?
-
03-07-2019 - |
質問
GCCの使用に対して実行可能ファイルをリンクしたい共有ライブラリがあります。共有ライブラリにはlibNAME.soという形式ではない非標準の名前があるため、通常の-lオプションは使用できません。 (たまたまPython拡張であるため、「lib」プレフィックスはありません。)
ライブラリファイルへのパスをリンクコマンドラインに直接渡すことはできますが、これによりライブラリパスが実行可能ファイルにハードコーディングされます。
例:
g++ -o build/bin/myapp build/bin/_mylib.so
パスを実行可能ファイルにハードコーディングせずに、このライブラリにリンクする方法はありますか?
解決
":"がありますライブラリに異なる名前を付けることができるプレフィックス。 使用する場合
g++ -o build/bin/myapp -l:_mylib.so other_source_files
_mylib.soのパスを検索する必要があります。
他のヒント
g ++の起動時に共有ライブラリを作業ディレクトリにコピーできる場合、これは機能するはずです:
g++ -o build/bin/myapp _mylib.so other_source_files
UnixまたはLinuxを使用している場合、ライブラリが必要なディレクトリにライブラリへのシンボリックリンクを作成できると思います。
例:
ln -s build / bin / _mylib.so build / bin / lib_mylib.so
次に、 -l_mylib
を使用できます
http://en.wikipedia.org/wiki/Symbolic_link
所属していません StackOverflow