web-dev-qa-db-ja.com

「collect2:ldが1の終了ステータスを返しました」を解決する方法?

linuxでソースコードをビルドすると、次のようなエラーが発生しました

qstring.cpp:(.text+0x2c01): undefined reference to `terminate(void)'
collect2: ld returned 1 exit status

この問題を解決するには?

8
sudha

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
8
Adam Rosenfield

terminateが存在するオブジェクトファイルまたはライブラリを見つけて、コンパイル/リンクコマンドに含める必要があります。

それがオブジェクトまたはソースファイルにある場合は、gccに渡してください(実際にsinggccであると仮定すると、そうでない場合、メソッドはおそらく同様になります) )通常どおりのコマンド。ライブラリにある場合は、-L(ライブラリパス)および-l(ライブラリ名)オプション。

2
paxdiablo