私は静的ライブラリを書く:libA.a. B.oという別のアプリケーションがあります。 B.oはlibA.aの関数を使用していません。私はlibA.oをB.oと組み合わせたいと思うので、B.oが動いているときにlibA.aのいくつかのものを他の方法で呼び出すことができます。gccに静的ライブラリを強制的にリンクさせるにはどうしたらいいですか?
私はこのようにmakefileを書きます:gcc B.c -o B.o -lA -u symbol_A
。ここではGCCのマニュアルから-uです:
http://gcc.gnu.org/onlinedocs/gcc/Link-Options.html
これは、未使用のライブラリをリンクする強制的に-uを使用することをお勧めして、symbol_Aは
libA.a
でいくつかのシンボルである。しかし、それは動作しません。リンクした後、私はB.oでLibA.aのものを見つけることができません。誰かに私にいくつかのヒントを教えてもらえますか?
p.s私はGCC 3.4.4、eclipse + CDTをウィンドウの下で使用しています。そしてB.oはlinuxの下に配備されます。
オブジェクトファイルまたは実行可能ファイルを作成しようとしていますか?実行可能ファイルの場合、通常は.o接尾辞がありません。あなたが関数 'symbol_A.Here'を未定義にしようとしていることで、gccはライブラリからの定義をプラグインします。これをやりたい理由は何ですか? – Karlson
Bから何もlibAのものを使用しない場合、libAのものは何も追加されません。 –
p.s私はGCC 3.4.4、eclipse + CDTをウィンドウ下で使用しており、B.oはlinuxの下でデプロイされます。 – user1134355