Mavericks boost ld: symbol(s) not found for architecture x86_64

一.错误提示

ld: symbol(s) not found for architecture x86_64

clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[2]: *** [tts] Error 1
make[1]: *** [all-recursive] Error 1

make: *** [all-recursive] Error 1


二.解决办法

生成b2: 

    ./bootstrap.sh  

用b2编译:

    ./b2 toolset=clang cxxflags="-arch x86_64" linkflags="-arch x86_64"

如此可以得到合适的库.a 和 .dylib


然后所有需要用到.a库的地方,挨个加上就是了.比如

 tts_LDADD = -liconv \
+                      libboost_regex.a 


三.原因分析(待验证)

boost库编译的时候,弄成了i386的

    正确的dylib

    [user boost] file libboost_regex.dylib

    libboost_regex.dylib: Mach-O 64-bit dynamically linked shared library x86_64

    错误的dylib

    [user boost] file libboost_regex.dylib

    libboost_regex.dylib: Mach-O 64-bit dynamically linked shared library i386


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值