gpt4 book ai didi

c++ - 交叉编译到 x86 时出现 libboost 系统链接器错误

转载 作者:IT王子 更新时间:2023-10-29 00:42:22 25 4
gpt4 key购买 nike

我正在尝试在 Ubuntu 11.04 x64 上构建 32 位应用程序。由于 libboost 的链接器错误,我在构建时遇到了一些问题。构建语句中有 -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 库。我发现的一个地方说尝试直接链接到它,但是当我执行 locate boost_system 时,结果是空的。当我尝试执行 sudo apt-get install libboost-system-dev 时,它告诉我它已经安装。我有点不知所措。库已安装,但 locate 找不到它?

谁能告诉我我需要做什么才能正确链接到 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() 的 undefined reference 。我尝试将 -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 位虚拟机来执行此操作,而不是交叉编译所有依赖项。

关于c++ - 交叉编译到 x86 时出现 libboost 系统链接器错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10515297/

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