0

libx.a には、何もしない関数 x() が 1 つだけあります。
liby.a には、何もしない y() と libx.a の x() を呼び出す yx() の 2 つの関数があります。
次に、関数 main() で liby.a の y() を呼び出す main.c があります。リンク ジョブを実行するときは、libx.a を追加する必要があります。そうしないと、gcc が「x」への未定義の参照というエラーを表示します。しかし、私は libx.a とは何の関係もない y() を使用しています。
私の場合、gccにlibx.aを無視させる方法はありますか? 言い換えれば、gcc は libx.a が本当に必要な場合にのみ libx.a を要求できますか?

libpthread.a と libmysqlclient.a で実行できます。libpthread と libmysqlclient を使用する libm.a があります。libm.a の空の関数のみを呼び出す main.c を作成しました。gcc はリンク時に libpthread.a と libmysqlclient.a を要求しません。libpthread/libmysqlclient と私の liby.a の違いは何ですか??

4

2 に答える 2

0

数分前に別の bbs から回答を得ました。たとえば、yc の y() と yx.c の yx() のように、2 つの別々のソース ファイルに y() と yx() を実装する必要があります。これを行うと、gcc は libx.a を必要としなくなります。

私はそれをテストしました、それは本当です!

于 2012-11-29T07:07:11.200 に答える
0

libx.aが本当に必要な場合、gccはlibx.aのみを要求できますか?

はい。実際、本当に必要な場合にのみ必要です。この場合、それは本当に必要です。

于 2012-11-29T06:39:57.270 に答える