Сборка для MacOSX, но связывание с dylib, созданным для файла iOS Simulator

Я только что обновился до бета-версии Xcode 5 с помощью инструментов командной строки 15 апреля 2013 года и получил следующее предупреждение при запуске сборки cmake во время стандартной попытки CMakeTestCCompiler.cmake для компиляции простой тестовой программы:

cmake -version
cmake version 2.8.11.2

ld: building for MacOSX, but linking against dylib built for iOS Simulator file '/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator7.0.sdk/usr/lib/libSystem.dylib' for architecture i386

lipo -info /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator7.0.sdk/usr/lib/libSystem.dylib
Non-fat file: libSystem.dylib is architecture: i386

Шаг компиляции:

/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/gcc -arch i386 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator7.0.sdk -o /Users/temp/testCCompiler.c.o -c /Users/temp/testCCompiler.c

lipo -info /Users/temp/testCCompiler.c.o 
Non-fat file: testCCompiler.c.o is architecture: i386

Шаг ссылки:

/usr/local/bin/cmake -E cmake_link_script /Users/temp/link.txt --verbose=1

где link.txt содержит:

/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/gcc -arch i386 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator7.0.sdk -Wl,-headerpad_max_install_names /Users/temp/testCCompiler.c.o -o testCCompiler

Похоже, что testCCompiler.co и libSystem.dylib - это i386, i386 указан в link.txt, а i386 - правильная архитектура для симулятора, поэтому я не уверен, почему он думает, что он строит для MacOSX. Возможно, параметр командной строки неправильный:(.

спасибо за любую помощь!

2 ответа

Решение

Проблема заключалась в том, что Xcode 5 заменяет gcc на clang и добавляет опцию "-triple", которая указывает OSX в качестве цели. Если вы передадите "-miphoneos-version-min=7.0" в обеих командных строках gcc, это сработает. Вы можете увидеть командную строку clang, если передадите "--verbose" в gcc. Также необходимо добавить в PATH для Xcode 5, чтобы cmake мог найти необходимые инструменты: export PATH=/Applications/Xcode5-DP6.app/Contents/Developer/Toolchains/XcodeDefault.xct‌ oolchain/usr/bin:/Applications/Xcode5-DP6.app/Contents/Developer/usr/bin:$PATH Ничего из этого не является официальным.., но у меня пока работает.

Запустите этот комментарий на вашем client.app:

export PATH=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xct‌oolchain/usr/bin:/Applications/Xcode.app/Contents/Developer/usr/bin:$PATH
Другие вопросы по тегам