新石器Wiki

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

ユーザ用ツール

サイト用ツール


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


差分

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

この比較画面へのリンク

両方とも前のリビジョン前のリビジョン
次のリビジョン
前のリビジョン
programing:c-language:gcc-programing:gcc-library-link-order [2022/06/26 08:24] – [参考] yokoprograming:c-language:gcc-programing:gcc-library-link-order [2022/06/27 08:48] (現在) yoko
行 7: 行 7:
 ライブラリの再帰検索 ライブラリの再帰検索
 ---------------- ----------------
-ライブラリ増えてきて、イブラリー間で相互参照しているような場合は、ライブラ指定する順番を見つけ出すのに悩ましいがある。   +ライブラリ増えてきて、アーカイブ間で相互参照しているような場合は、ライブラ指定する順番を見つけ出すのに悩ましい場合がある。   
-そのような場合には、下例のように「ライブラリ指定を `--start-group` と `--end-group` オプションで囲んで指定すると、新たな未定義参照がなくなるまで繰返し検索される。+そのようなには、下例のように「ライブラリ指定を `--start-group` と `--end-group` オプションで囲んで指定すると、新たな未定義参照がなくなるまで繰返し検索される。
  
 <code text> <code text>
行 15: 行 15:
  
 但し、このオプションを指定すると、パフォーマンス落ちてリンクに時間がかかる場合があるようです。でも、2つ以上のアーカイブ中で、参照の循環が避けられない場合にはこのオプションを使った方が混乱が少ない。 但し、このオプションを指定すると、パフォーマンス落ちてリンクに時間がかかる場合があるようです。でも、2つ以上のアーカイブ中で、参照の循環が避けられない場合にはこのオプションを使った方が混乱が少ない。
 +
 +
 +尚、リンカがコンパイラドライバ (例えば gcc) によって間接的に起動される場合、すべてのリンカのコマンドラインオプションは、 `-Wl,` (もしくは特定のコンパイラドライバの適切なオプション) に続いて以下のように指定されなければならない。
 +
 +<code text>
 +gcc -Wl,--start-group -lmisc -lhoge -letc -Wl,--end-group
 +</code>
  
  
行 21: 行 28:
  
   * ライブラリファイル名が `libhoge.a` だとすると、GCCでは最初の `lib` と後ろの `.a` は省いて、「`-lhoge`」のようにリンク指定する。   * ライブラリファイル名が `libhoge.a` だとすると、GCCでは最初の `lib` と後ろの `.a` は省いて、「`-lhoge`」のようにリンク指定する。
 +  * macOSでは、`--start-group` と `--end-group` のオプションは受け付けてくれない。ただ、Ubuntuのgccほど厳密ではなくてある程度の再帰はみてくれている模様。
  
 参考 参考
 ---- ----
  
-1. [[http://www.hakodate-ct.ac.jp/~tokai/tokai/gtkmm/etc/p1.htm|静的ライブラリのリンク時にundefined referenceエラーが出る(gcc)]] +1. [[https://ambiesoft.com/blog/archives/4307|GCCのスタティックリンクの順番は大事]] 
-2. [[http://ambiesoft.fam.cx/blog/archives/4307|GCCのスタティックリンクの順番は大事]] +2. [[https://nxmnpg.lemoda.net/ja/1/ld?utm_source=pocket_mylist|manページ  — LD]]
-3. [[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.1656199478.txt.gz · 最終更新: 2022/06/26 08:24 by yoko