2012-01-05 34 views
0

我最近建成的32位使用gcc 4.5的64位计算机上升压1.48,使用这些指令:参考升压1.48 __sync_fetch_and_add_4 32位共建没有解决

./bootstrap.sh --prefix=$INSTALL_PREFIX --exec-prefix=$INSTALL_PREFIX --with-libraries=system,filesystem,python --with-python=python2 
./b2 address-model=32 architecture=x86 install 

编译似乎罚款和库正确放置到安装文件夹中。但是,当我尝试libboost_filesystem.so链接到我的节目,我得到以下错误之一:

/gpfs/wizard/flight/analysis/mori/GGSINSTALL/install/lib/libboost_filesystem.so: undefined reference to `__sync_fetch_and_add_4' 
collect2: ld returned 1 exit status 

我管理使用CMake的我的代码;这些都是我用配置的32位编译标志:

-DCMAKE_C_FLAGS=-m32 -DCMAKE_CXX_FLAGS=-m32 

我不知道如果我做错事的升压配置或通过CMake的标志我的软件配置,但我怀疑的推动作用。我发现了一些关于这个主题的讨论(例如,undefined reference to sync_fetch_and_add_4),但他们几乎总是提到其他架构,如arm或报告解决方案,我不知道如何在boost构建中实现(例如将-march = i486传递给gcc,how这可以用bjam完成吗?)。有人可以给我一些提示吗?谢谢。

回答

0

有同样的问题,当我在Ubuntu LTS 10.4 64

我作为描述....因为尼古拉·森建议跳过架构相同的标志编译升压1.50.0 = x86标志并生成库。这对我工作

请注意,但是在Mac OS X狮子,你需要指定架构和地址模型在32位编译