2016-04-01 24 views
0

私はlibmyname.soの代わりに_myname.soという名前の共有ライブラリを持っています(これはPythonとインターフェイスしているためです)。 私はこのlibに対してC++コードをリンクしたいと思います。標準ライブラリ以外のライブラリ名のldライブラリ検索パス

g++ -o _myother.so myother.o _myname.so ... -shared 

をしかし_myname.soが他のディレクトリにある場合、私は、パスを配置する必要があり、かつ実行時に、私は、現在のディレクトリに入れて使用してリンクしている場合 それが正常に動作しますライブラリは、標準の場所(LD_LIBRARY_PATHなど)ではなく、この同じパスに表示されます。

私のライブラリの名前がlibmyname.soの場合、-Lのようなldの検索パスを指定する方法はありますか?そのため、実行時に_myname.soが標準の場所で検索されますか?

答えて

1

GNU Binutilsのバージョン2.18では、正確な名前でライブラリを指定できるようにする機能がldに追加されました。現在ld manページから

:元の質問については

 
    -l namespec 
    --library=namespec 
     Add the archive or object file specified by namespec to the list of files to link. 
     This option may be used any number of times. If namespec is of the form :filename, 
     ld will search the library path for a file called filename, otherwise it will 
     search the library path for a file called libnamespec.a. 

は、namespec:filename形は次のように使用されます。

g++ -o _myother.so myother.o -L../myname/ -l:_myname.so -shared 
  • オプション、-L../myname/、パスを追加します、../myname/をライブラリ検索パスに追加します。このパスには、リンク時に_myname.soの位置が含まれている必要があります。
  • -l:_myname.soオプションは、ldに正確な名前のライブラリ_myname.soを検索するように指示します。検索時にlib接頭辞と.so接尾辞は_myname.soに追加されません。

実行時に、共有ライブラリ_myname.soが標準の場所で検索されます。

+0

ありがとう、これは私が探していたものです。残念ながら、私は今のところ2.17に固執しています。 –

関連する問題