В/usr/lib/system/libcache.dylib, отсутствует требуемая архитектура armv6

При попытке скомпилировать фиктивную программу для iphoneos, Xcode4, gcc не выходит за пределы исходного каталога sysroot

$ echo $ISYSROOT
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.1.sdk
$ gcc -arch armv6 --sysroot=$ISYSROOT  test.cpp
ld: in /usr/lib/system/libcache.dylib, missing required architecture armv6 in file for architecture armv6
collect2: ld returned 1 exit status

Если я оставлю вне профиля,

$ gcc -arch armv6  test.cpp
ld: warning: ignoring file /usr/lib/crt1.o, missing required architecture armv6 in file
ld: warning: ignoring file /usr/lib/libgcc_s.1.dylib, missing required architecture armv6 in file
ld: warning: ignoring file /usr/lib/libSystem.dylib, missing required architecture armv6 in file
Undefined symbols for architecture armv6:
  "start", referenced from:
     -u command line option
ld: symbol(s) not found for architecture armv6
collect2: ld returned 1 exit status

Следующие работы, но он чувствует себя очень дрянным и не масштабируемым. Что здесь происходит?

$ gcc -arch armv6  -L$ISYSROOT/usr/lib/system --sysroot=$ISYSROOT  test.cpp

Обновление. По-видимому, это известная проблема, хотя до сих пор неясно, как передавать sysroot в gcc, но isysroot на ld

http://www.doitscared.com/?m=201104

При компиляции библиотеки, если вы видите эту ошибку "ld: file not found: /usr/lib/system/libcache.dylib для архитектуры armv7", то ваш Команда компоновщика использует "-sysroot", которая не работает в Xcode 4. Вместо этого измените команду компоновщика на использование "-isysroot". (Примечание: это применяется только к команде компоновщика. Команды компиляции должны продолжаться использовать "-sysroot". Подробнее см. Здесь.)

Ответ 1

Измените цель развертывания вашего проекта как минимум на 4,3, и он будет работать. Это проблема с XCode 4, но действительно нет необходимости развертывать приложения для iOS версий до 4.3. Пользователи iOS имеют тенденцию оставаться в курсе последних версий iOS.