我正在尝试在 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 库。我发现的一个地方说尝试直接链接到它,但是当我这样做时locate 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
and-L /usr/lib/libboost_system-mt.so
并没有解决这个问题。与仅添加/usr/lib/libboost_system.a
and/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()
现在有关。我尝试将 a 添加-lboost_filesystem
到 build 命令,但这并没有解决这个问题,并且我确保它引用了我在构建时构建的 32 位库libboost_system
。