0

我有一个问题:我使用 Boost ( locks.hpp) 编写代码。我的服务器正在运行 x64 Ubuntu (Linux)。当我用 编译这段代码时-m64,它构建得很好。但是当我尝试编译时-m32,我得到了这些错误:

g++ -fPIC -m32 -shared -Wl,-soname,test.so -ldl -o test.so test.cpp -lboost_thread

/usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/4.4.5/../../../libboost_thread.so when searching for -lboost_thread
/usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/4.4.5/../../../libboost_thread.a when searching for -lboost_thread
/usr/bin/ld: skipping incompatible //usr/lib/libboost_thread.so when searching for -lboost_thread
/usr/bin/ld: skipping incompatible //usr/lib/libboost_thread.a when searching for -lboost_thread
/usr/bin/ld: cannot find -lboost_thread
collect2: ld returned 1 exit status

我究竟做错了什么?谢谢!

4

2 回答 2

3

尝试安装 32 位 boost 包:

sudo apt-get install libboost-thread-dev:i386 
于 2012-07-09T00:57:59.047 回答
2

您需要 32 位版本的线程库。您的问题的答案已经在 stackoverflow.com 上。从源代码构建 boost 时使用address-model选项。Boost 为在 Linux 上构建提供了很好的文档

bjam address-model=32
于 2012-07-09T00:52:53.177 回答