加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – 交叉编译到x86时的libboost-system链接器错误

发布时间:2020-12-16 06:59:54 所属栏目:百科 来源:网络整理
导读:我正在尝试在Ubuntu 11.04 x64上构建一个32位应用程序.由于libboost的链接器错误,我在构建时遇到了一些问题. build语句中包含-lboost_system,但是当我尝试构建时,我得到了一堆: CommunicationModule.cpp:(.text+0x68c1): undefined reference to boost::sys
我正在尝试在Ubuntu 11.04 x64上构建一个32位应用程序.由于libboost的链接器错误,我在构建时遇到了一些问题. build语句中包含-lboost_system,但是当我尝试构建时,我得到了一堆:

CommunicationModule.cpp:(.text+0x68c1): undefined reference to boost::system::generic_category()

CommunicationModule.cpp:(.text+0x68d7): undefined reference to boost::system::system_category()

我在谷歌上发现的一切都说我需要链接到boost_system库.我找到的一个地方说要直接尝试链接它,但是当我找到boost_system时,结果是空的.当我尝试做一个sudo apt-get install libboost-system-dev时,它告诉我它已经安装好了.我在这里有点不知所措.该库已安装,但找不到它?

任何人都可以告诉我我需要做什么来正确链接到boost :: system?我对linux和编译器的复杂性相当新,所以任何帮助都会受到赞赏.

更新:

这是dpkg -L libboost-system1.42-dev的输出:

/. 
/usr 
/usr/share 
/usr/share/doc
/usr/share/doc/libboost-system1.42-dev
/usr/share/doc/libboost-system1.42-dev/copyright
/usr/share/doc/libboost-system1.42-dev/NEWS.Debian.gz
/usr/share/doc/libboost-system1.42-dev/README.Debian.gz 
/usr/lib
/usr/lib/libboost_system.a
/usr/lib/libboost_system-mt.so
/usr/lib/libboost_system-mt.a 
/usr/lib/libboost_system.so

我可以使用一个标志直接链接到其中一个吗?我尝试使用-L /usr/lib/libboost_system.so和-L /usr/lib/libboost_system-mt.so,但这些都没有解决问题.与将/usr/lib/libboost_system.a和/usr/lib/libboost_system-mt.a添加到构建语句相同.

这是编译行:

g++ -m32 -Wl,-O1 -o UTNaoTool [.o files] -L/usr/lib32 -lqglviewer-qt4 -lqwt-qt4 -lboost_system -lboost_thread -lQtXml -lQtOpenGL -lQtGui -lQtNetwork -lQtCore -lGLU -lpthread

更新2:

我下载了boost 1.49并为32位构建了所有内容,这似乎有所帮助.很多错误消失了,但现在我仍然有这些:

CommunicationModule.cpp:(.text+0x68c1): undefined reference to
boost::system::get_generic_category()

请注意,功能不同.所以我的所有错误都是关于get_system_category()和get_generic_category()的未定义引用.我尝试在构建命令中添加-lboost_filesystem,但是没有解决这个问题,我确保它引用了我在构建libboost_system时构建的32位库.

解决方法

看看我自己的安装,似乎libboost-system-dev没有安装库.使用dpkg告诉我安装了什么bz libboost-system-dev我得到:

$dpkg -L  libboost-system-dev
/.
/usr
/usr/share
/usr/share/doc
/usr/share/doc/libboost-system-dev
/usr/share/doc/libboost-system-dev/copyright
/usr/share/doc/libboost-system-dev/changelog.gz

我想你需要安装libboost-system1.48.1(或其他一些版本).

sudo apt-get install libboost-system1.XX.Y

您还可以使用find命令搜索库,例如,在/ usr下搜索以libboost_system开头的所有文件:

find /usr -name "libboost_system*"

编辑:由于您是从64位操作系统交叉编译到32位操作系统,因此需要32位版本的boost库.我很想设置一个小型32位虚拟机来完成这项工作,而不是交叉编译所有依赖项.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读