如何从两个来源链接libgcc_s.1.dylib会破坏事物?

时间:2013-04-22 09:02:25

标签: macos gcc macports dylib

我正在运行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 +通用编译器编译,并且在使用某些C I / 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 - [{1}}的变体被链接?

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

  3. 如果这是一个问题,我该怎么做才能停止或解决此问题,同时继续构建至少10.5目标?

0 个答案:

没有答案