0

最近、リンクとVPATHこの質問の副作用で問題が発生しました。

ライブラリを実装していて、テストをリンクしたいとします。あなたには2つのオプションがあります(私が知っている):

  • 使用-Lおよび-lオプション:

    gcc main.o -Lpath/to/lib -lname
    
  • ライブラリファイルを直接与える:

    gcc main.o path/to/lib/libname.a
    

私の質問は、実装中の自分のライブラリにリンクしているという事実 (インストールされている/usr/libため、たとえば配置されているものではない) を考えると、どちらの方法を選択しても利点はありますか?

現在、私は最初の方法を使用していますが、2 番目の方法により、私が抱えていた問題を解決できますVPATH。切り替えを行う前に、2 番目の方法に特定の注意事項があるかどうかを知ることに特に関心があります。

4

1 に答える 1

1

私が考えることができる唯一の違いは、最初の方法では、リンカーが共有ライブラリーが存在する場合はそれを選択できることです。.a静的アーカイブに明示的に名前を付けるため、2番目はそうではありません。

共有ライブラリを使用している場合は違いがあります。2番目のフォームがsonameなしで共有ライブラリに名前を付ける場合、アプリケーションにはDT_NEEDEDタグがありますがpath/to/lib/libname.so、最初のフォームには値が付いたタグがありますlibname.so。(共有ライブラリにDT_NEEDEDタグに使用されるsonameがあるが、パスが指定されている場合。)

于 2012-06-18T18:41:46.763 に答える