所以我怀疑这是因为我最近在我的系统上制作和安装gcc-7.3.0(ubuntu 14.04)。这曾经有用但现在已经不再有了,我真的无法弄清楚原因。 任何建议都会受到欢迎。
感谢: 丹
g ++ - 7.3.0没有编译
dan@chicabuntu:~/RNN/GAForest$ g++ -o validateStemForest validateStemsForest.o prog.o loadSequences.o stem.o stemBinder.o -std=c++11 -DRANDSOURCE=7 -lm -lgomp -L/usr/lib/x86_64-linux-gnu -lboost_date_time
validateStemsForest.o: In function `unsigned short boost::date_time::month_str_to_ushort<boost::gregorian::greg_month>(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)':
validateStemsForest.cpp:(.text._ZN5boost9date_time19month_str_to_ushortINS_9gregorian10greg_monthEEEtRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE[_ZN5boost9date_time19month_str_to_ushortINS_9gregorian10greg_monthEEEtRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE]+0xab): undefined reference to `boost::gregorian::greg_month::get_month_map_ptr[abi:cxx11]()'
collect2:错误:ld返回1退出状态
但是,我有正确的库:
dan@chicabuntu:~/RNN/GAForest$ ls -ltrh /usr/lib/x86_64-linux-gnu/libboost_date_time.*
lrwxrwxrwx 1 root root 28 Jun 21 2014 /usr/lib/x86_64-linux-gnu/libboost_date_time.so -> libboost_date_time.so.1.54.0
-rw-r--r-- 1 root root 67K Jun 21 2014 /usr/lib/x86_64-linux-gnu/libboost_date_time.so.1.54.0
-rw-r--r-- 1 root root 143K Jun 21 2014 /usr/lib/x86_64-linux-gnu/libboost_date_time.a
图书馆有我试图链接到
的功能dan@chicabuntu:~/RNN/GAForest$ nm -D /usr/lib/x86_64-linux-gnu/libboost_date_time.so| grep get_month_map_ptr
0000000000008960 T _ZN5boost9gregorian10greg_month17get_month_map_ptrEv
图书馆在路径
dan@chicabuntu:~/RNN/GAForest$ echo $LD_LIBRARY_PATH
/usr/local/cuda-8.0/lib64/:/usr/local/cuda/lib64:/usr/local/cuda-8.0/lib64/:/usr/local/cuda/lib64::/usr/local/lib:/usr/local/lib/x86_64-linux-gnu:/usr/lib/nvidia-375:/usr/local/lib:/usr/local/lib/x86_64-linux-gnu:/usr/lib/nvidia-375:/usr/lib:/usr/lib/x86_64-linux-gnu
以下是我使用的g ++和boost的版本:
dan@chicabuntu:~/RNN/GAForest$ g++ -v
Using built-in specs.
COLLECT_GCC=g++
COLLECT_LTO_WRAPPER=/usr/local/libexec/gcc/x86_64-pc-linux-gnu/7.3.0/lto-wrapper
Target: x86_64-pc-linux-gnu
Configured with: ../gcc-7.3.0/configure --disable-multilib
Thread model: posixqqw
gcc version 7.3.0 (GCC)
dan@chicabuntu:~/RNN/GAForest$ dpkg -S /usr/include/boost/version.hpp
libboost1.54-dev: /usr/include/boost/version.hp
答案 0 :(得分:1)
[abi:cxx11]可能是一个线索。 新版本的gcc具有不同的ABI以支持c ++ 11:https://gcc.gnu.org/onlinedocs/libstdc++/manual/using_dual_abi.html。如果您的boost库是使用旧的ABI编译的,它们不会与使用新ABI编译的代码链接。
尝试使用-D_GLIBCXX_USE_CXX11_ABI=0