在Mac OS X 10.6下,我正在构建一个链接到boost 1.46的C++共享库。我正在使用安装在Xcode 4.0中的命令行工具。64位版本可以正常工作。当构建32位版本时,在链接时会收到以下错误消息:
ld: bad codegen, pointer diff in boost::detail::sp_counted_base::sp_counted_base()to global weak symbol vtable for boost::detail::sp_counted_basefor architecture i386
我找到的唯一解决方法是使用 g++-4.0 进行32位构建。我尝试过的其他编译器(g++-4.2、llvm-g++-4.2 和 clang++)都会产生上述错误。