#iphone #objective-c #c #xcode
#iPhone #objective-c #c #xcode
Вопрос:
Итак, я пытаюсь использовать библиотеку C в Objective-C, проекте iPhone. Я получаю эту ошибку компоновщика при попытке скомпилировать:
файл был собран для неподдерживаемого формата файла, который не связан с архитектурой (i386)
Я собираю эту библиотеку, используя стандартный
./configure make
С какой архитектурой я должен это создать для работы с iPhone project? Спасибо! Обновить
Я обновил Makefile и добавил -arch i386 в строку CFLAGS. Когда я запускаю make, я теперь получаю эту ошибку:
Компиляция spammer.c gcc -o spammer spammer.o ../src/libirclient.a -lpthread ld: предупреждение: в ../src/libirclient.a файл был собран для неподдерживаемого формата файла, который не связан с архитектурой (x86_64)
Означает ли это, что мне нужно где-то отредактировать другой makefile??
Ответ №1:
Вероятно, он был создан для x86_64, который используется по умолчанию. Вам нужно изменить библиотеку, чтобы она была скомпилирована для i386 и соответствовала вашему приложению.
Обычно вы делаете это, устанавливая переменную среды CFLAGS в -arch i386 перед запуском configure. Не забудьте сначала выполнить «make dist clean». Если это не сработает, вы также можете вручную отредактировать Makefile после того, как configure создаст его, и добавить -arch i386 в строку CFLAGS= .
Комментарии:
1. Попробуйте это, как только я смогу. Спасибо за информацию!
2. Несмотря на ошибку, которую я получаю при сборке с этим набором CFLAG -arch i386, библиотека, похоже, связывает
Ответ №2:
Эта ошибка:
Compiling spammer.c gcc -o spammer spammer.o ../src/libircclient.a -lpthread ld: warning: in ../src/libircclient.a, file was built for unsupported file format which is not the architecture being linked (x86_64)
Возникает при сборке примеров, и это не совсем то, что вы хотите, верно?
Сделайте make в папке SRC, и сборка с помощью -arch i386 или -arch arvm7 будет работать.