Могу ли я создавать как 32-разрядную, так и 64-разрядную архитектуры библиотеки в Mac OS?

#macos #build

#macos #сборка

Вопрос:

Мне нужно создать библиотеку (Ipopt) в Mac OS X и использовать ее из двух разных программ (Python и Matlab). Однако одна программа является 32-разрядной, а другая — 64-разрядной. Должен ли я создавать две отдельные библиотеки из двух архитектур, а затем соответствующим образом задавать путь для каждой программы? Или я могу создать обе архитектуры в одном и том же файле (файлах) библиотеки, и программа выберет правильную архитектуру для загрузки? Если я могу, то как?

Спасибо!

Ответ №1:

Вы можете создать обе архитектуры и объединить их в один двоичный файл. Инструмент для этого lipo .

Например, если вы создали libpopt как 32-разрядную библиотеку и поместили ее в lib/ , и снова собрали ее как 64-разрядную библиотеку и поместили ее lib64/ , то команда для объединения этих двух может быть:

 lipo lib/libpopt.a lib64/libpopt.a -create -output libUniversal/libpopt.a
  

Для получения дополнительной информации см. Справочную страницу lipo (здесь или через man lipo ).

Комментарии:

1. Прохладный. Раньше не знал о lipo.