根据OSX版本或处理器版本将Universal Binary链接到不同的动态库

时间:2011-03-31 09:46:17

标签: macos dynamic-linking universal-binary

这实际上是两个问题,但我怀疑他们有相似的答案。

我有一个依赖于X11库的程序,它在OS10.4上有不同的名称,位于不同的地方(与10.5和10.6相比)。

这个程序也依赖于不适用于ppc的库。编译ppc时可以删除这种依赖关系,但我想尽可能使用这个库(因为它可以提供几个数量级的加速)。

所以这两个问题是:

  1. 如何链接到不同操作系统版本中不同位置的动态库?或者重新说明 - 如何让动态链接器从不同操作系统版本的不同位置加载库?

  2. 如果没有ppc部件链接到该库,如何制作通用二进制链接到库的某些部分(英特尔部分)?

  3. 当然,如果我的问题有其他解决方案,我也很感兴趣。

1 个答案:

答案 0 :(得分:1)

Apple GCC手册提到 - Xarch:

http://developer.apple.com/library/mac/#documentation/Darwin/Reference/ManPages/man1/gcc.1.html

该文档说明

  

将选项应用于命令行   建筑拱门。

所以大概你想要做的事情是:

gcc -arch ppc -arch i386 -Xarch ppc -lfoo

如果您是从XCode构建的,则可以在“目标设置”面板中执行此操作。转到“Other Linker Flags”,然后单击面板左下角的齿轮按钮,选择“Add Build Setting Condition”,它将允许您为每个架构指定不同的链接器标志。