私はこの問題を解決する方法'collect2:ldは1の終了ステータスを返しました'を解決するには?
qstring.cpp:(.text+0x2c01): undefined reference to `terminate(void)'
collect2: ld returned 1 exit status
のようなエラーを得たのlinuxで私のソースコードをビルドしますか?
私はこの問題を解決する方法'collect2:ldは1の終了ステータスを返しました'を解決するには?
qstring.cpp:(.text+0x2c01): undefined reference to `terminate(void)'
collect2: ld returned 1 exit status
のようなエラーを得たのlinuxで私のソースコードをビルドしますか?
どのオブジェクトファイルまたはライブラリterminate
が存在するかを調べて、コンパイル/リンクコマンドに含める必要があります。
それはオブジェクトやソースファイルでなら、単に通常通りごgcc
(ない場合は、この方法は、おそらく同様であろう、あなたはgcc
を使用して、実際にしていると仮定した場合)コマンドにそれを与えます。ライブラリ内にある場合は、-L
(ライブラリパス)と-l
(ライブラリ名)オプションを調べる必要があります。
void terminate(void) { raise(9); }
terminate
C++標準ライブラリで定義されているので、あなたがいることをリンクしていることを確認してくださいされています。あなたがコンパイルにはgccを使用していると仮定すると、あなたがソースコードをコンパイルし、実行可能g++
を使用する必要があり、 ないgcc
実行ファイル:g++
として実行する場合
g++ source.cc -o output
、リンカは自動的にあなたのため(のlibstdC++)C++標準ライブラリにリンクします。あなたが代わりにプレーンな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