重複の可能性:
リンカーの順序 - GCC
GCC C++ リンカー エラー: 'vtable for XXX' への未定義の参照、'ClassName::ClassName()' への未定義の参照
GCC を使用してアプリケーションを構築しています。メイン プログラムはmyfunc()
、静的ライブラリ (たとえば ) にある関数 (たとえば ) を呼び出しますlibmylib.a
。この関数は、数学ライブラリからcosf()
and関数を呼び出します。sinf()
ここで、gcc コマンド ラインで-lmylib -lm
オプションを指定すると、ビルドは正常に行われます。ただし、ライブラリの順序が変更されると、ビルドは次のエラーで失敗します。
libmylib.a(mylib.o): In function `myfunc':
mylib.c:22: undefined reference to `cosf'
mylib.c:23: undefined reference to `sinf'
gcc が特定の順序で指定されたライブラリを使用してビルドを完了しないのはなぜですか?