我正在运行 Xcode 4.6.2 的 Mac OS X 10.8.3 主机上使用 MacPorts GCC 4.7.2+universal 构建二进制文件。
我的目标是使用编译标志为 Mac OS X 10.5-10.8 主机构建:
-mmacosx-version-min=10.5
生成的二进制文件my_first_binary
有两个链接到libgcc_s.1.dylib
:
$ otool -L ../bin/my_first_binary
../bin/my_first_binary:
/opt/local/lib/libstdc++.6.dylib (compatibility version 7.0.0, current version 7.17.0)
/usr/lib/libgcc_s.1.dylib (compatibility version 1.0.0, current version 1669.0.0)
/opt/local/lib/gcc47/libgcc_s.1.dylib (compatibility version 1.0.0, current version 1.0.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 169.3.0)
该二进制文件是用 C++ 编写的,使用 MacPorts g++
4.7.2+ 通用编译器编译,使用某些 CI/O 例程打开文件时会遇到一些麻烦。
我通过更改编译标志制作了第二个针对 10.6-10.8 主机的二进制文件:
-mmacosx-version-min=10.6
第二个二进制文件只有一个指向libgcc_s.1.dylib
库的链接:
$ otool -L ../bin/my_second_binary
../bin/my_second_binary:
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 169.3.0)
/opt/local/lib/libstdc++.6.dylib (compatibility version 7.0.0, current version 7.17.0)
/opt/local/lib/gcc47/libgcc_s.1.dylib (compatibility version 1.0.0, current version 1.0.0)
第二个二进制文件可以正常工作并且可以毫无问题地打开文件。
我的问题是:
将最低构建版本设置为 10.5 会导致
/usr/lib
-variantlibgcc_s.1.dylib
被链接怎么办?这会导致我的两个二进制文件中基于 C 的代码出现命名空间冲突或其他问题吗?
如果这是一个问题,我可以做些什么来停止或解决这个问题,同时继续构建到最低 10.5 目标?