web-dev-qa-db-ja.com

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

GCCの使用に対して実行可能ファイルをリンクしたい共有ライブラリがあります。共有ライブラリの名前はlibNAME.soの形式ではない非標準であるため、通常の-lオプションを使用できません。 (たまたまPython拡張子であるため、「lib」プレフィックスはありません。)

ライブラリファイルへのパスをリンクコマンドラインに直接渡すことはできますが、これにより、ライブラリパスが実行可能ファイルにハードコードされます。

例えば:

g++ -o build/bin/myapp build/bin/_mylib.so

パスを実行可能ファイルにハードコードせずにこのライブラリにリンクする方法はありますか?

43
kbluck

ライブラリに異なる名前を付けることができる「:」プレフィックスがあります。使用する場合

g++ -o build/bin/myapp -l:_mylib.so other_source_files

パスで_mylib.soを検索する必要があります。

69
David Nehme

G ++が呼び出されたときに共有ライブラリを作業ディレクトリにコピーできる場合、これは機能するはずです。

g++ -o build/bin/myapp _mylib.so other_source_files
2
Robert Gamble

UnixまたはLinuxを使用している場合は、ライブラリが必要なディレクトリにライブラリへのシンボリックリンクを作成できると思います。

例えば:
ln -s build/bin/_mylib.so build/bin/lib_mylib.so

その後、-l_mylibを使用できます

http://en.wikipedia.org/wiki/Symbolic_link

1
Chris Roland