0

私はこの分野では不慣れで、経験豊富な人々の助けが必要です.

gcc-4.7.2 を搭載した redhat マシンで製品をビルドしようとしています。lstdc++ を静的にリンクしています。その結果、未定義の参照の問題が発生しています。

具体的には、いくつかの詳細を示します。

  1. -Wl,--verbose オプションを指定してビルドすると、次のように表示されます: RHEL5.5/gcc-4.7.2/lib/libstdc++.a が成功しました
  2. nm --demangle RHEL5.5/gcc-4.7.2/lib/libstdc++.a | grep "_M_hook" の表示: 00000000 T std::__detail::_List_node_base::_M_hook(std::__detail::_List_node_base*)
  3. しかし結果として: sym_sdfio_ioinfo.cpp:(.text+0x598e): undefined reference to std::_List_node_base::_M_hook(std::_List_node_base*)' ../../lib/debugger/ye_datagen/tmax/lib/libsym_kernel-O.a(sym_sdfio_ioinfo_rw.o): In functionCIOInfo::LoadSegment(long long, SYM_SDF::CSDFFilter const*, SYM_SDF::CSDFSegment*)': sym_sdfio_ioinfo_rw.cpp:(.text +0xf3d): std::_List_node_base::_M_hook(std::_List_node_base*)' ../../lib/debugger/ye_datagen/tmax/lib/libsym_kernel-O.a(sym_sdfio_rw_text.o):sym_sdfio_rw_text.cpp:(.text+0x1592): more undefined references tostd::_List_node_base::_M_hook(std::_List_node_base*) への未定義の参照' collect2 に従います: エラー: ld が 1 つの終了ステータスを返しました

私が見る唯一の奇妙なことは、 00000000 T std::__detail::_List_node_base::_M_hook(std::__detail::_List_node_base*)の " 00000000 " です

ここで何が欠けているのかを理解するのを手伝ってください。

4

1 に答える 1

1

1年後、これはおそらくあなたにとって何の役にも立たないでしょうが、今日私はこれに出くわしました。私は RedHat 6 ボックスでビルドしていて、アプリケーションのソース ツリーを Ubuntu マシンからコピーしていました。

ビルド時にこのエラーが発生しましたが、ソース ツリーで "make clean" を実行するのを怠っていたため、Ubuntu でビルドされたオブジェクトとリンクしていたことがわかりました。古いライブラリとオブジェクトが元の RedHat 6 ビルドを汚染しないように、ビルド環境を必ずクリアしてください。

于 2014-04-07T14:58:39.767 に答える