mac上编译boost

来源:互联网 发布:北海行知学校怎么样 编辑:程序博客网 时间:2024/05/22 16:21

MAC上编译boost后在QT上使用时遇到两个问题,第一个是target版本不同 ,QT的版本是10.8,而boost编译出来的是10.12,因为我的mac刚升级到10.12.这样在连接boost时就报错。库的版本高于QT的要生成的APP的版本。

第二个问题是链接libboost_filesystem.a时报错 :-1: error: symbol(s) not found for architecture x86_64

这错误报的也是一头雾水,原来是少少依赖了一个库libboost_system.a

加上:

LIBS += /Users/gaolin/Public/boost_1_63_0/stage/lib/libboost_filesystem.a
LIBS += /Users/gaolin/Public/boost_1_63_0/stage/lib/libboost_system.a

编译通过,一切OK

对于第一个问题,可以在编译boost时指定低版本:

./b2 toolset=clang cxxflags="-arch x86_64" linkflags="-arch x86_64" cflags=-mmacosx-version-min=10.8 cxxflags=-mmacosx-version-min=10.8 mflags=-mmacosx-version-min=10.8 mmflags=-mmacosx-version-min=10.8 linkflags=-mmacosx-version-min=10.8 toolset=clang link=static runtime-link=static --with-filesystem variant=debug -a

因为我的QT target版本就是10.8,所以版本一致,自然就可以编译通过。


也可以通过修改QT的target版本来达到效果:

Qt/5.7.clang/mkspecs/macx-clang/qmake.conf

QMAKE_MACOSX_DEPLOYMENT_TARGET = 10.8
改为

QMAKE_MACOSX_DEPLOYMENT_TARGET = 10.12

重新编译工程就通过了。


参考:http://stackoverflow.com/questions/40347361/c-mac-os-x-xcode-8-compile-boost-set-deployment-target-to-os-x-10-11

参考: http://blog.csdn.net/yongshengsilingsa/article/details/25228137


0 0