Свяжите Universal Binary с различными динамическими библиотеками в зависимости от версии OSX или версии процессора.

На самом деле это два вопроса в одном, но я подозреваю, что у них похожие ответы.

У меня есть программа, которая зависит от библиотеки X11, которая в OS10.4 имеет другое имя и находится в другом месте (по сравнению с 10.5 и 10.6).

Эта же программа также имеет зависимость от библиотеки, которая не работает на ppc. Эту зависимость можно убрать при компиляции под ppc, но я хотел бы использовать эту библиотеку, когда смогу (поскольку она дает ускорение на несколько порядков).

Итак, два вопроса:

  1. Как связать динамическую библиотеку, которая находится в другом месте в разных версиях ОС? Или перефразируя - как заставить динамический компоновщик загружать библиотеку из другого места в разных версиях ОС?

  2. Как мне сделать некоторые части (части Intel) универсальной двоичной ссылкой на библиотеку, не имея ссылок частей ppc на эту библиотеку?

Конечно, если есть другие решения моих проблем, мне тоже интересно.


person Mankarse    schedule 31.03.2011    source источник


Ответы (1)


В руководстве Apple GCC упоминается -Xarch :

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

Документация для этого говорит

Применить опцию к командной строке для архитектуры arch.

Итак, предположительно, вы хотели бы сделать что-то вроде:

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

Если вы строите из XCode, вы можете сделать это на панели настроек Target. Перейдите к «Другие флаги компоновщика», затем нажмите кнопку с изображением шестеренки в левом нижнем углу панели и выберите «Добавить условие настройки сборки», и это позволит вам указать разные флаги компоновщика для каждой архитектуры.

person Ted Mielczarek    schedule 07.04.2011