gpt4 book ai didi

c++ - 链接器无法找到 __assert_fail

转载 作者:太空狗 更新时间:2023-10-29 23:05:43 26 4
gpt4 key购买 nike

我正在尝试构建一个使用 boost 的库,虽然该库编译正常,但它遇到了一个我不理解的奇怪的链接器错误。我构建并安装了 Boost 1.54(也尝试了 1.52),一切顺利。

它声称无法找到 __assert_fail,我认为它是标准库的一部分。我试图在 64 位中构建所有内容。我在 Fedora 16 上,使用 gcc 4.6.3

有什么想法吗?

make  all-ammake[1]: Entering directory `/data/adrian/code/ext/mapper/cmappertools'/bin/sh ./libtool  --tag=CXX   --mode=link g++  -g -O2    -o libcmappertools.la -rpath /usr/local/lib/python2.7/site-packages cmappertools.lo  libtool: link: g++  -fPIC -DPIC -shared -nostdlib /usr/lib/gcc/x86_64-redhat-linux/4.6.3/../../../../lib64/crti.o /usr/lib/gcc/x86_64-redhat-linux/4.6.3/crtbeginS.o  .libs/cmappertools.o   -L/usr/lib/gcc/x86_64-redhat-linux/4.6.3 -L/usr/lib/gcc/x86_64-redhat-linux/4.6.3/../../../../lib64 -L/lib/../lib64 -L/usr/lib/../lib64 -L/usr/lib/gcc/x86_64-redhat-linux/4.6.3/../../.. -lstdc++ -lm -lc -lgcc_s /usr/lib/gcc/x86_64-redhat-linux/4.6.3/crtendS.o /usr/lib/gcc/x86_64-redhat-linux/4.6.3/../../../../lib64/crtn.o  -O2   -Wl,-soname -Wl,libcmappertools.so.0 -o .libs/libcmappertools.so.0.0.0.libs/cmappertools.o: In function `condition_variable':/usr/local/include/boost/thread/pthread/condition_variable_fwd.hpp:69: undefined reference to `__assert_fail'/usr/local/include/boost/thread/pthread/condition_variable_fwd.hpp:69: undefined reference to `__assert_fail'.libs/cmappertools.o: In function `~mutex':/usr/local/include/boost/thread/pthread/mutex.hpp:108: undefined reference to `__assert_fail'.libs/cmappertools.o: In function `condition_variable':/usr/local/include/boost/thread/pthread/condition_variable_fwd.hpp:69: undefined reference to `__assert_fail'.libs/cmappertools.o: In function `~mutex':/usr/local/include/boost/thread/pthread/mutex.hpp:108: undefined reference to `__assert_fail'.libs/cmappertools.o:/usr/local/include/boost/smart_ptr/shared_array.hpp:194: more undefined references to `__assert_fail' follow/usr/local/bin/ld: .libs/libcmappertools.so.0.0.0: hidden symbol `__assert_fail' isn't defined/usr/local/bin/ld: final link failed: Bad valuecollect2: ld returned 1 exit statusmake[1]: *** [libcmappertools.la] Error 1make[1]: Leaving directory `/data/adrian/code/ext/mapper/cmappertools'make: *** [all] Error 2

最佳答案

几年后,在不同的 Fedora (29)、更高版本的 boost、gcc 等上。我遇到了同样的问题。更多的是靠直觉而不是理解我摆脱了 gcc visibility pragmas(即我注释掉了所有的: #pragma GCC 可见性推送({whatever})... #pragma GCC 可见性弹出)成功了——编译、链接并成功运行。

关于c++ - 链接器无法找到 __assert_fail,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18165527/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com