[解決済み] コマンドラインオプションの--start-groupと--end-groupとは何ですか?
質問
コマンドラインオプションの目的は何ですか?以下のコマンドラインの意味を読み解くのにお役立てください。
-Wl,--start-group -lmy_lib -lyour_lib -lhis_lib -Wl,--end-group -ltheir_lib
どうやらリンクと関係があるようですが、GNUのマニュアルではグループ化とは一体何を意味するのかが不明です。
どのように解決するのですか?
複数のライブラリ間の循環的な依存関係を解決するためのものです。
-(
と
-)
).
引用元
なぜ、ライブラリのリンクの順番がGCCでエラーを引き起こすことがあるのですか?
あるいは
man ld
http://linux.die.net/man/1/ld
-(
アーカイブス-)
または--start-group
アーカイブス--end-group
は アーカイブス は、アーカイブファイルのリストでなければなりません。これらは明示的なファイル名か、-l オプションでなければなりません。
指定されたアーカイブは、新しい未定義の参照が作成されなくなるまで繰り返し検索されます。通常、アーカイブはコマンドラインで指定された順序で一度だけ検索されます。そのアーカイブ内のシンボルが、コマンドライン上で後から現れたアーカイブ内のオブジェクトによって参照される未定義のシンボルを解決するために必要な場合、リンカーはその参照を解決することができないでしょう。アーカイブをグループ化することで、可能性のあるすべての参照が解決されるまで、すべてのアーカイブが繰り返し検索されます。
このオプションを使用すると、かなりのパフォーマンス コストが発生します。2 つ以上のアーカイブの間で避けられない循環参照がある場合にのみ使用するのが最善です。
そのため、グループ内のライブラリは新しいシンボルのために何度も検索することができ、次のような醜い構成は必要ありません。
-llib1 -llib2 -llib1
PS アーカイブとは、基本的に静的ライブラリ (
*.a
ファイル)
関連
-
[解決済み] g++ 出力: ファイルが認識されません。ファイル形式が認識されない
-
[解決済み] gcc エラー:間違った ELF クラスです。ELFCLASS64
-
[解決済み] シグナル11[SIGSEGV]のデフォルトアクションでプロセスが終了しています。
-
[解決済み] cygwinにgccをインストールするにはどうしたらいいですか?
-
[解決済み] なぜGCCはa*a*a*a*aを(a*a*a)*(a*a*a)に最適化しないのでしょうか?
-
[解決済み] g++とgccの違いは何ですか?
-
[解決済み】-Wl,-rpath -Wlがわかりません。
-
[解決済み] ライブラリを静的にリンクするようにgccに直接指示する
-
[解決済み] 一部のライブラリのみを静的にリンクする
-
[解決済み] gcc -s "と "strip "コマンドの違いは何ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] コンパイル時に127のエラーが発生する。
-
[解決済み] プリプロセッサー出力
-
[解決済み] シュール vs サール ... x86 アセンブリ gnu
-
[解決済み] シグナル11[SIGSEGV]のデフォルトアクションでプロセスが終了しています。
-
[解決済み] コンパイル時に127のエラーが発生する。
-
[解決済み] なぜGCCはa*a*a*a*aを(a*a*a)*(a*a*a)に最適化しないのでしょうか?
-
[解決済み] どのフラグが -march=native で有効になるかを確認する方法は?
-
[解決済み] CUDAは私のgccのバージョンと互換性がありません。
-
[解決済み] Windows 7 マシンに gcc をインストールするには?
-
[解決済み] 変更されたヘッダーファイルを含むソースファイルをMakefileが自動的にリビルドするにはどうしたらいいですか?(C/C++の場合)