1
g++ (GCC) 4.7.2 
3.7.6-201.fc18.x86_64 #1 SMP Mon Feb 4 15:54:08 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux
Fedora release 18 (Spherical Cow)

こんにちは、

プログラムをリンクしようとしてコンパイル中に問題が発生しました。

リンカー エラーは次のとおりです。

/usr/bin/ld: point.o: undefined reference to symbol '_Znwj@@GLIBCXX_3.4'
/usr/bin/ld: note: '_Znwj@@GLIBCXX_3.4' is defined in DSO /lib/libstdc++.so.6 so try adding it to the linker command line
/lib/libstdc++.so.6: could not read symbols: Invalid operation
collect2: error: ld returned 1 exit status

このオブジェクト ファイルはpoint.o、libstdc++ に存在しない関数を呼び出そうとしています。

readelf を使用してシンボル名が存在するかどうかを確認しようとすると、見つかりません。

readelf --all libstdc++.so.6.0.17 | grep _Znwj@@GLIBCXX_3.4

これは、新しいバージョンで削除された可能性のある古い libstdc++ のシンボルを point.o が探しているためですか?

ご提案いただきありがとうございます。

4

1 に答える 1

11

私の場合、g++ ではなく gcc を使用していました。2012 年には動作していましたが、2014 年に別のマシンでビルドすると動作しなくなりました。gnu コンパイラは確かに変更されました。私の場合の答えは追加することでした

  -lstdc++

エラーメッセージが示唆するように、リンク行の最後に。HTH。

于 2014-09-17T00:44:34.440 に答える