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

一年后我们到了,所以这可能对你没有任何好处,但我今天遇到了这个问题。我在 RedHat 6 机器上构建,并从我的 Ubuntu 机器上复制了应用程序的源代码树。

我在构建时遇到了这个错误,但发现我忽略了在源代码树上运行“make clean”,因此与在 Ubuntu 上构建的对象链接。确保清除您的构建环境,以免旧的库和对象污染您的原始 RedHat 6 构建。

于 2014-04-07T14:58:39.767 回答