对'sc_dt::sc_uint_base::to_string[abi:cxx11]的未定义引用
Undefined reference to `sc_dt::sc_uint_base::to_string[abi:cxx11]
我有一些使用 SystemC 库的代码,当我在机器上时编译得很好,但在我 ssh 时会抛出未定义的引用。
g++ -Wno-deprecated -O0 -g3 -I/path/to/include socex2.cpp -L/path/to/lib -lsystemc
/tmp/ccCNdiMA.o: In function `sc_dt::sc_uint_base::print(std::ostream&) const':
/path/to/include/sysc/datatypes/int/sc_uint_base.h:844: undefined reference to `sc_dt::sc_uint_base::to_string[abi:cxx11](sc_dt::sc_numrep, bool) const'
collect2: error: ld returned 1 exit status
起初我认为这是LD_LIBRARY_PATH
的问题,在~/.bashrc中设置为/path/to/lib
。我在 ~/.bash_profile 中为非交互式会话(如 ssh(提供 ~/.bashrc 源代码。
为了验证,以下是相关的/usr/bin/env
TERM=xterm
SHELL=/bin/bash
SSH_CLIENT=xx.xx.xx.xx 56176 22
LD_LIBRARY_PATH=/path/to/lib
SSH_CONNECTION=xx.xx.xx.xx 56176 yy.yy.yy.yy 22
_=/usr/bin/env
为什么我的程序无法链接?我正在使用的标头和库完全相同,并且在完全相同的位置。
附言
- 我没有这些计算机的管理员访问权限
- GCC 是 5.4.0
- 操作系统是 Ubuntu 16.04
依赖库:
$ ldd /path/to/lib/libsystemc.so linux-vdso.so.1 => (0x00007ffe29d36000) libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fb9b85f5000) libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007fb9b8273000) libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fb9b7f69000) libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fb9b7ba0000) libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007fb9b798a000) /lib64/ld-linux-x86-64.so.2 (0x000056093a23e000)
...to_string[abi:cxx11] ...
两件事之一...
首先,海湾合作委员会和Clang是混合和匹配的。如果你使用 Clang 编译,这可能是一个可疑的问题,因为 GCC5 和 C++11 ABI 和 LLVM 问题 23529:添加对 gcc 属性abi_tag的支持(需要与 gcc 5 的 libstdc++ 兼容(。
其次,to_string
是 C++11,所以你需要 -std=c++11
或-std=gnu++11
.如果所有其他条件相同,则C++11是可能的候选者。它还会为您提供新的 ABI,除非您-D_GLIBCXX_USE_CXX11_ABI=0
.
您仍然可能遇到依赖库配置的问题,并且它们可能会出现在您的问题中。
相关文章:
- 链接器错误:未定义对"Reference_Genome::seq[abi:cxx11]"的引用
- 在使用 GCC 4.8.5 构建的应用中对 cxx11 函数的未定义引用
- 如何在红帽上强制使用 cxx11 ABI?
- 涉及STD :: __ CXX11名称空间的链接器错误 - 双ABI问题
- 使用 abi:cxx11 的 GCC 未定义引用
- 对'sc_dt::sc_uint_base::to_string[abi:cxx11]的未定义引用
- 使用TensorFlow时"unsupported/Eigen/CXX11/Tensor: No such file or directory"
- 对"ClassName::memberField[abi:cxx11]"的未定义引用
- 错误:<char>使用 getline 时basic_istream为非标量类型 cxx11::string
- CXX11不确定的参考文献6.2.0
- 是否可以同时使用 C++11 ABI _and_ cxx11 样式和旧样式字符串
- 对Google :: ProtoBuf :: Internal :: empty_string_ [abi:cxx11]
- 由于符号与 abi::cxx11 引起的链接问题
- 在 Ubuntu 15.10 上使用 g++-4.9 编译时出现运行时错误 [abi:cxx11]
- 本征不支持的/CXX11/张量模块的编译错误
- cmake 错误' Could NOT find CXX11 ' VS 2010?