Сборка для 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.xctoolchain/usr/bin:/Applications/Xcode.app/Contents/Developer/usr/bin:$PATH