新石器Wiki

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

ユーザ用ツール

サイト用ツール


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


**文書の過去の版を表示しています。**

GCCでのリンク時のライブラリーの順番

GCCで静的リンク時のライブラリ指定の順番には依存性がある。呼び出される側のライブラリーは「後で」リンクする必要があり注意が必要。この指定がうまくいっていないときは「undefined referenceエラー」がでる。

又、相互に参照している場合は、ライブラリ指定は2回以上記述しても問題ない。

ライブラリの再帰検索

ライブラリー増えてきて、ライブラリー間で相互参照しているような場合は、ライブラ指定する順番を見つけ出すのに悩ましい時がある。
そのような場合には、下例のように「ライブラリ指定を --start-group--end-group オプションで囲んで指定すると、新たな未定義参照がなくなるまで繰返し検索される。

--start-group -lmisc -lhoge -letc --end-group

但し、このオプションを指定すると、パフォーマンス落ちてリンクに時間がかかる場合があるようです。でも、2つ以上のアーカイブ中で、参照の循環が避けられない場合にはこのオプションを使った方が混乱が少ない。

補足

  • ライブラリファイル名が libhoge.a だとすると、GCCでは最初の lib と後ろの .a は省いて、「-lhoge」のようにリンク指定する。

参考

programing/c-language/gcc-programing/gcc-library-link-order.1656199478.txt.gz · 最終更新: 2022/06/26 08:24 by yoko