2010-12-13 12 views
0

私は自分のプロジェクトに動的にリンクする必要があるライブラリを構築しています。出力は.soファイルなので、正しい軌道に乗っていると思います。私はそれがコンパイル時にリンクされている方法に懸念しています - そのメイクファイルの場所を指定することによって、そして私が以前に遭遇したことのないマクロの束に依存します。共有オブジェクトライブラリを静的にリンクすることはできますか?

実際に動的にリンクしている.soライブラリ(.aではなく)をビルドしているので、あるいは、.so libsが静的にリンクされている可能性があります。その場合、何が起こっているのかをよりよく理解するためにmake/configファイルを分割する必要があります。

おかげで、

アンドリュー

答えて

0

は、私が実行可能ファイルおよび共有オブジェクトの内部構造に精通していないので、私はいくつかの実用的なヒントを与えることができます。 (gccによって呼び出された)このようld共有オブジェクトの代わりに、実行可能なバイナリを作るに - ライブラリにオブジェクトファイルをリンクする際

あなたがgccを使用すると仮定すると、それは-sharedオプションを持っている必要があります。

gcc -shared -o libabc.so *.o ... 

あなたはこれでいくつかのアプリケーションをリンクすることがエラーなしでリンクしなければならないとlddコマンドを使用して、その後あなたはその依存関係の中でlibabc.soを見ることができるはずですlibabc.so。

$ ldd app 
    ... 
    libabc.so => ............... 
関連する問題