4

我正在运行 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)

第二个二进制文件可以正常工作并且可以毫无问题地打开文件。

我的问题是:

  1. 将最低构建版本设置为 10.5 会导致/usr/lib-variantlibgcc_s.1.dylib被链接怎么办?

  2. 这会导致我的两个二进制文件中基于 C 的代码出现命名空间冲突或其他问题吗?

  3. 如果这是一个问题,我可以做些什么来停止或解决这个问题,同时继续构建到最低 10.5 目标?

4

0 回答 0