新石器Wiki

近年はシリコン(石)から進化した便利なもので溢れる時代。そんな気になった事や試した事など記す。

ユーザ用ツール

サイト用ツール


programing:c-language:gcc-programing:gcc-library-link-order


差分

このページの2つのバージョン間の差分を表示します。

この比較画面へのリンク

両方とも前のリビジョン前のリビジョン
programing:c-language:gcc-programing:gcc-library-link-order [2022/06/27 08:48] yokoprograming:c-language:gcc-programing:gcc-library-link-order [2026/07/28 13:16] (現在) – 外部編集 127.0.0.1
行 1: 行 1:
-GCCでのリンク時のライブラリーの順番 +====== GCCでのリンク時のライブラリーの順番 ======
-================================+
 GCCで静的リンク時のライブラリ指定の順番には依存性がある。呼び出される側のライブラリーは「後で」リンクする必要があり注意が必要。この指定がうまくいっていないときは「undefined referenceエラー」がでる。 GCCで静的リンク時のライブラリ指定の順番には依存性がある。呼び出される側のライブラリーは「後で」リンクする必要があり注意が必要。この指定がうまくいっていないときは「undefined referenceエラー」がでる。
  
 又、相互に参照している場合は、ライブラリ指定は2回以上記述しても問題ない。 又、相互に参照している場合は、ライブラリ指定は2回以上記述しても問題ない。
  
-ライブラリの再帰検索 +===== ライブラリの再帰検索 =====
-----------------+
 ライブラリが増えてきて、アーカイブ間で相互参照しているような場合は、ライブラリ指定する順番を見つけ出すのに悩ましい場合がある。   ライブラリが増えてきて、アーカイブ間で相互参照しているような場合は、ライブラリ指定する順番を見つけ出すのに悩ましい場合がある。  
 そのような時には、下例のように「ライブラリ指定を `--start-group` と `--end-group` オプションで囲んで指定すると、新たな未定義参照がなくなるまで繰返し検索される。 そのような時には、下例のように「ライブラリ指定を `--start-group` と `--end-group` オプションで囲んで指定すると、新たな未定義参照がなくなるまで繰返し検索される。
行 24: 行 22:
  
  
-補足 +===== 補足 =====
-----+
  
   * ライブラリファイル名が `libhoge.a` だとすると、GCCでは最初の `lib` と後ろの `.a` は省いて、「`-lhoge`」のようにリンク指定する。   * ライブラリファイル名が `libhoge.a` だとすると、GCCでは最初の `lib` と後ろの `.a` は省いて、「`-lhoge`」のようにリンク指定する。
   * macOSでは、`--start-group` と `--end-group` のオプションは受け付けてくれない。ただ、Ubuntuのgccほど厳密ではなくてある程度の再帰はみてくれている模様。   * macOSでは、`--start-group` と `--end-group` のオプションは受け付けてくれない。ただ、Ubuntuのgccほど厳密ではなくてある程度の再帰はみてくれている模様。
  
-参考 +===== 参考 =====
-----+
  
-1. [[https://ambiesoft.com/blog/archives/4307|GCCのスタティックリンクの順番は大事]] +  - [[https://ambiesoft.com/blog/archives/4307|GCCのスタティックリンクの順番は大事]] 
-2. [[https://nxmnpg.lemoda.net/ja/1/ld?utm_source=pocket_mylist|manページ  — LD]]+  [[https://nxmnpg.lemoda.net/ja/1/ld?utm_source=pocket_mylist|manページ  — LD]]
  
  
 {{tag>gcc}} {{tag>gcc}}
  
programing/c-language/gcc-programing/gcc-library-link-order.1656287307.txt.gz · 最終更新: by yoko