@H_
502_0@我想用boost库1.57来编译Linux x64上的C ++项目。@H_
502_0@这个项目是用scons编译的,我在Arch Linux上成功编译了,但是这次在Ubuntu机器上失败了。@H_
502_0@我
添加了-lboost_coroutine标志进行
链接,但
错误“未定义的引用”仍然存在。@H_
502_0@/usr/bin/g++ -o build/gcc.release/app -pthread -g build/gcc.release/src/han/unity/rpcx.o -lpthread -lz -lboost_coroutine -lboost_context -lboost_date_time build/gcc.release/src/han/unity/rpcx.o: In function `attributes': /usr/local/include/boost/coroutine/attributes.hpp:31: undefined reference to `boost::corouti
nes::stack_traits::default_size()'@H_
502_0@我注意到
属性.hpp恰好是boost协程头
文件之一。 我试图用nm来提升协程库,似乎没有问题。@H_
502_0@交叉编译到x86时libboost-sy
stem链接器
错误@H_
502_0@
链接到Boost正则expression式库时程序启动时崩溃@H_
502_0@升压asio计时器不阻止读取呼叫@H_
502_0@在Linux中加强安装@H_
502_0@为什么boost asio
函数expires_from_
Now()取消deadline_timer?@H_
502_0@nm /usr/local/lib/libboost_coroutine.a | grep "default_size" 0000000000000170 T _ZN5boost10corouti
nes12stack_traits12default_sizeEv@H_
502_0@我search了这个
错误的可能原因,大部分是关于
链接器标志的顺序。
在这种情况下,rpcx.o取决于boost_coroutine,所以这出现在前面。@H_
502_0@还有什么可能的原因?@H_
502_0@如何使用具有Boost Asio
套接字的特定networking接口/ Ip?@H_
502_0@从C ++应用程序启动Linux服务时避免
套接字inheritance@H_
502_0@升压程序将无法在Linux上工作@H_
502_0@使用gcc4.7在linux x64平台上
升级协程和asiotesting版本失败@H_
502_0@UDP – 微爆期间丢失的数据@H_
502_0@经过几个小时的努力,我终于
解决了。@H_
502_0@原来是旧的boost(v1.55)lib仍然存在,其中有静态库与我手动安装的boost库(v1.57)相同的
名称。
链接器在v1.57之前发现了v1.55静态库,所以它使用这些库进行
链接。 然而,在旧版本中, boost::corouti
nes::stack_traits::default_size()仍然没有引入,这使
链接器找不到这个
函数的正确位置,并返回“undefind reference”。@H_
502_0@对于那些在编译过程中偶然发现“未定义引用”
错误的人来说,
我有几个步骤来调试这个问题,并
在这里写下了你的信息。@H_
502_0@检查
链接的库是否存在于/usr/lib/或/usr/local/lib/ ,如果不存在,请尝试先安装这些库。@H_
502_0@检查是否为您的引用的库
添加了正确的
链接标志。 例如,如果使用boost_coroutine库,请确保在
链接期间
添加-lboost_coroutine 。@H_
502_0@检查
链接标志的顺序是否正确(对于gcc)。 这可能是大多数情况下的原因。 如果B依赖A,请务必将B放在A的前面@H_
502_0@检查是否存在相同库的不同版本。@H_
502_0@我希望这些可以帮助。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。