0

arで圧縮されたスタティック ライブラリ(つまり libSOMTEHING.a) の関数を使用する方法をいくつか示します。

ld -Lpath/to/library -lname myapp.o -o 結果
ld path/to/library/libname.a myapp.o -o 結果

違いは何ですか?たとえば、ライブラリ全体が実行可能ファイルにリンクされていますか、それとも必要な関数だけですか? 2 番目の例では、lib とオブジェクト ファイルの場所を切り替えることは重要ですか?

4

1 に答える 1

1

最初の行では、動的ライブラリ (libname.so) の検索が、ディレクトリ内の静的ライブラリ (libname.a) の前に発生します。また、/path/to/library だけでなく、標準の lib パスも libname.* で検索されます。

「マンド」より

共有ライブラリをサポートするシステムでは、ld は libnamespec.a 以外のファイルも検索する場合があります。具体的には、ELF および SunOS システムでは、ld は、libnamespec.a という名前のライブラリを検索する前に、libnamespec.so という名前のライブラリのディレクトリを検索します。(慣例により、「.so」拡張子は共有ライブラリを示します。)

2 行目は、リンカが path/to/lib にあるスタティック ライブラリを使用するように強制します。

ビルドされた動的ライブラリ (libname.so) がなく、利用可能な唯一のライブラリが path/to/library/libname.a である場合、2 つの行は同じ「結果」バイナリを生成します。

于 2013-02-22T09:05:32.933 に答える