libname.so命名規則に従わないライブラリの-lまたはハードコーディングパスなしでGCCを使用してリンクする方法は?

StackOverflow https://stackoverflow.com/questions/207069

質問

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top