オブジェクトファイルとライブラリに同じシンボルが定義されている場合、GNUリンカはオブジェクトファイルからシンボルを取得します。複数の定義済みシンボルのC/C++リンカの順序
Iからコンパイルされた「MYLIB」の両方foo.cppに、ソースファイルに同じシグネチャを持つ機能foo
を定義した場合
g++ -L"dir/to/lib" -o Executable Test.o foo.o -lMyLib
、GNUリンカが常にあれば、元から1を好む:この例を考えてみましょう私はこの命令を使う。
この現象はGNU toolchainに固有のものですか?同じように動作する他のリンカーからも知っていますか?これはどこに文書化されていますか(GNUドキュメンテーション、C++標準)?私は何も見つけることができませんでした...
ユニットテスト(別名リンクシーム)を行っている間に特定の機能を置き換える/模擬するために、この機能を使用したいと思います。 http://gcc.gnu.org/onlinedocs/gcc/Link-Options.htmlから
オブジェクトファイルは実行可能ファイルを形成します。ライブラリは**未定義のシンボル**を解決するために使用されます。したがって、実行可能ファイルはすべての主要な機能を提供します。MyLib(と他のライブラリ)が静的であるかダイナミックであるかに大きく依存します。静的ライブラリの場合、明確に定義されています。動的ライブラリの場合、実行時動的リンカに依存し、各OSによって異なります。 –