указанный тип архитектуры (arm) для файла не соответствует его cutype (7) и cpusubtype (3) - PullRequest
0 голосов
/ 19 июля 2010

Я пытался использовать openLdap для своего приложения для iphone, которое я сейчас разрабатываю.Для компиляции openLdap я использую fat_build.sh из текст ссылки .Я также разрабатываю с Simulator 3.1.3 и под OS X 10.6.0.Но на последнем шаге

$DEVROOT/usr/bin/lipo -arch arm lnsout/$LIBLDAP_NAME_static.arm -arch i386 lnsout/$LIBLDAP_NAME_static.i386 -create -output lnsout/$LIBLDAP_NAME_static
$DEVROOT/usr/bin/lipo -arch arm lnsout/$LIBLBER_NAME_static.arm -arch i386 lnsout/$LIBLBER_NAME_static.i386 -create -output lnsout/$LIBLBER_NAME_static

я получаю следующую ошибку:

/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/lipo: specifed architecture type (arm) for file (lnsout/libldap.a.arm) does not match it's cputype (7) and cpusubtype (3) (should be cputype (12) and cpusubtype (0))
/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/lipo: specifed architecture type (arm) for file (lnsout/liblber.a.arm) does not match it's cputype (7) and cpusubtype (3) (should be cputype (12) and cpusubtype (0))

Я попытался исправить это, установив путь поиска по заголовку, путь поиска по библиотеке и флаги компоновщика без результата.

Так что если у вас есть идеи, как я могу решить эту проблему, пожалуйста, дайте мне знать!

1 Ответ

2 голосов
/ 15 сентября 2010

Я получил похожую ошибку, когда собирал libssh2 для iPhone, и после долгих поисков я понял, что моя сборка .arm фактически была построена для i386 (мой MacBook Pro).

Я зашел так далеко, что скомпилировал libssh2 для ARMv6 (устройство), i386 (компьютер) и x86_64 (симулятор), просто чтобы убедиться, что каждая версия собрана правильно.Затем я объединил архитектуры arm и x86_64, используя lipo.У меня есть помеченный комментарий в моих заметках, что «make clean» и «make distclean» - ваши друзья », так что, возможно, если вы сначала создали библиотеку для своей машины, у нее все еще был файл конфигурации для этого, когда вы создавали для iPhone.

Я использовал команды "lipo -info libldap.a.arm" и "file libldap.a.arm" (модифицированные для ваших имен файлов), чтобы увидеть дополнительную информацию о типе сборки.К вашему сведению, как только они построены правильно, эти команды показали архитектуры «arm» и «x86_64».

Последнее, что я заметил - код в приведенной выше ссылке на github на самом деле содержит предварительно скомпилированные универсальные двоичные файлы для libldap.и liblber.a.После того, как я возился с созданием библиотек, я заметил это и просто использовал эти два файла с файлом ldap.h, и я был в порядке.

...