linuxでソースコードをビルドすると、次のようなエラーが発生しました
qstring.cpp:(.text+0x2c01): undefined reference to `terminate(void)'
collect2: ld returned 1 exit status
この問題を解決するには?
terminate
はC++標準ライブラリで定義されているので、リンクしていることを確認してください。コンパイルにgccを使用している場合、g++
実行可能ファイルを使用してソースコードをコンパイルする必要があります。 notgcc
実行可能ファイル:
g++ source.cc -o output
g++
として実行すると、リンカーはC++標準ライブラリ(libstdc ++)に自動的にリンクします。代わりにgccをプレーンgcc
として実行する場合、またはリンカーld
を直接呼び出す場合は、ライブラリにリンクするために-lstdc++
を自分で追加する必要があります。例:
gcc source.cc -o output -lstdc++ # Compile directly from source
ld source1.o source2.o -o output -lstdc++ # Link together object files
terminate
が存在するオブジェクトファイルまたはライブラリを見つけて、コンパイル/リンクコマンドに含める必要があります。
それがオブジェクトまたはソースファイルにある場合は、gcc
に渡してください(実際にsinggcc
であると仮定すると、そうでない場合、メソッドはおそらく同様になります) )通常どおりのコマンド。ライブラリにある場合は、-L
(ライブラリパス)および-l
(ライブラリ名)オプション。