0

x86 ターゲット用に、大規模なプロジェクトを MinGW の GCC 4.8.1 にリンクしようとしています。私はこのようにリンカーを呼び出しています

D:\MyGCCPath\gcc -L [LIBPATHS]  -nostdlib -Wl,-Map,D:\PathToMapFile.map,--emit-relocs [OBJECTFILES AND LIBS] -lmsvcrt -lgcc -o D:\PathToMyOutputFile

この呼び出しで、次のリンカ エラーが発生します。

libgcc.a(__main.o):(.text+0x5a): undefined reference to `atexit'

さまざまなバージョン (100 と 90) を試しmsvcrましたが、この問題に詳しくないため、これは必死の試みでした。MinGW が提供する正しいライブラリを使用しています。このエラーを修正する方法はありますか?

4

2 に答える 2

4

-nostdlibとリンクしています。atexit()は からの機能ですstdlib.h

GCCリンクオプションによると:

-nostdlib

リンク時に、標準のシステム起動ファイルまたはライブラリを使用しないでください。起動ファイルはなく、指定したライブラリのみがリンカに渡され、システム ライブラリのリンケージを指定するオプション ( や など-static-libgcc)-shared-libgccは無視されます。

于 2013-11-06T13:47:57.597 に答える
0

ライブラリは、コマンド ラインで使用される順序でチェックされるため、-lgcc -lmsvcrt.

于 2015-08-20T07:41:58.547 に答える