如何在OSX上为早期部署目标进行编译?

时间:2016-12-07 13:45:18

标签: macos boost

之前已经问过这个问题,但似乎没有一个答案正在发挥作用..这是因为它们是不完整的,还是事情已经发生了变化,我不知道。

我为10.7的部署目标构建了我的代码(我的客户使用他们的机器进行音乐制作,因此他们通常更喜欢坚持他们所知道的工作而不是每次新的操作系统版本都更新。)

我正在使用提升。

所以,当我补课时,我会收到一堆警告

ld: warning: object file (/usr/local/lib/libboost_filesystem.a(path.o)) was built for newer OSX version (10.10) than being linked (10.7)
ld: warning: object file (/usr/local/lib/libboost_system.a(error_code.o)) was built for newer OSX version (10.10) than being linked (10.7) 

等等。

所以,我希望构建boost(目前版本为1.58,不幸的是cmake通常是它可以找到的几个版本),部署目标为10.7

似乎神奇的指令是

MacOSX的版本分钟= 10.7

除了我无法使其发挥作用。

./bootstrap.sh
sudo ./b2 -a macosx-version-min=10.7 install 

只是没有做到,也没有尝试过任何其他事情(我不熟悉b2是如何工作的,所以我在黑暗中抓住了。)

我希望我错过了一些简单的东西,但是我会非常感激一些帮助

问候

乔恩

1 个答案:

答案 0 :(得分:1)

我遇到了同样的问题,只能通过使用10.7库构建boost来修复它。我使用过XCode 8.2.1。这是我做的:

  1. 修改" Darwin.Jam"。寻找这一行:count 并在SELECT * FROM my_table WHERE id = $id

  2. 下面添加此行
  3. 修改" Info.plist"在feature macosx-version-min : : propagated optional ;并设置feature.extend macosx-version-min : 10.7 ;

  4. 确保您的XCode.app已安装10.7 SDK。这是正确的位置:/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform您可以从早期版本的XCode中提取或复制它。

  5. 现在使用以下选项构建提升:<key>MinimumSDKVersion</key> <string>10.11</string>

  6. E.g。 /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs

    上面的解决方案将使用10.7 SDK构建Boost,而不是将Target SDK设置为10.7