1. ホーム
  2. gcc

[解決済み] ライブラリを静的にリンクするようにgccに直接指示する

2022-04-25 01:40:31

質問

を使うのは違和感があります。 -Wl,-Bstatic を伝えるために gcc どのライブラリを静的にリンクさせたいか。結局のところ、私は gcc は直接、ライブラリとのリンクに関する他のすべての情報 ( -Ldir , -llibname ).

静的にリンクすべきライブラリをgccドライバに直接指示することは可能でしょうか?

明確にしてください。 あるライブラリが静的バージョンにのみ存在する場合、そのライブラリが -Wl,-Bstatic しかし、私は gcc を使用して、スタティック・ライブラリの方を優先しています。また、ライブラリファイルを直接指定するとリンクしてしまうことも知っていますが、スタティックライブラリとダイナミックライブラリを含めるセマンティクスは同じにしておきたいと思います。

どのように解決するのですか?

使用方法 -l: の代わりに -l . 例えば -l:libXYZ.a とリンクさせることができます。 libXYZ.a . 注目すべきは lib.a が書き出されるのとは対照的に -lXYZ に自動展開されます。 libXYZ.so / libXYZ.a .

それは のオプションで、GNU ld リンカ :

-l namespec ... もし 名前指定 は、次のような形式です。 :filename , ld というファイルをライブラリパスから探します。 ファイル名 という名前のファイルを探します。 libnamespec.a . ... ELF ... システムの場合。 ld というライブラリのディレクトリを検索します。 libnamespec.so という名前のものを検索する前に libnamespec.a . ... この動作は :filename というファイルを常に指定します。 ファイル名 ."

(以降 binutils 2.18 )

これはGNUリンカーでのみ動作することに注意してください。もし、あなたの ld GNUのものでない場合は、運が悪いとしか言いようがありません。