2013-09-19 3 views
5

Я установил xcode 5 и заметил, что gcc-компилятор устарел. Предполагая, что я не хочу переключаться на Apple LLVM 5.0, вот мои вопросы:Использование iOS 7 SDK с llvm-gcc-4.2

Возможно ли использовать SDK iOS7 и по-прежнему компилироваться в llvm-gcc-4.2?

Если да, то как это сделать?

Если вы не знаете, если это возможно, пожалуйста, не пишите ответы, как «использование лязг, человек», потому что они на самом деле не отвечают вопросов я разместил.

+6

Могу ли я спросить, почему вы не хотите использовать 'clang'? – trojanfoe

+1

Я думаю, что «мне просто любопытно» недостаточно :). Скажем, есть огромный проект, который не нравится компилироваться в clang. В будущем это будет исправлено, но на данный момент было бы здорово скомпилировать его «по-старому» :). – podkova

+1

Итак, вы готовы обновить его, чтобы использовать iOS 7, но не исправить его, чтобы использовать 'clang'? Я думаю, что ваш единственный путь - вернуться к Xcode 4. – trojanfoe

ответ

5

Apple удалил поддержку llvm-gcc-4.2 в XCode 5. Даже если вы установите и измените базовый sdk на 6.1 sdk, вы не сможете построить с помощью llvm-gcc-4.2. Таким образом, ваш единственный вариант - продолжить использование XCode 4.x, если вы хотите использовать llvm-gcc-4.2.

0

Чтобы установить версию gcc, вы можете использовать homebrew. Скорее всего, все ваши Makefiles должны быть исправлены (Вздох)

я сделал:

brew search gcc 

И результаты:

homebrew/versions/gcc43  
homebrew/versions/gcc45 
homebrew/versions/gcc47  
homebrew/versions/gcc49 
homebrew/versions/gcc44 
homebrew/versions/gcc45 
homebrew/versions/gcc48  
homebrew/versions/llvm-gcc28 
homebrew/dupes/apple-gcc42 
1

Можно ли использовать iOS7 SDK и до сих пор компиляции в llvm-gcc-4.2?

Если вы хотите скомпилировать все приложение с использованием LLVM-GCC-4.2: Наверное, нет. Я сам этого не проверял, но заголовкам iOS 7 нужно было только добавить одну зависимость от функции clang, отсутствующей в llvm-gcc-4.2, и вы плаваете в ошибках компиляции. Вы можете взломать свой путь через них, но, вероятно, будет легче (не говоря уже о будущем будущем), чтобы сосать его и модернизировать до clang.

Если вам нужно только собрать некоторые из вашего приложения с помощью LLVM-GCC-4.2: Конечно, до тех пор, пока вы не должны импортировать любые IOS 7 заголовков в тех частях, которые вы строите с LLVM-gcc- 4.2.

Вы можете попытаться переместить проблематичные биты в статическую библиотеку, скомпилировав ее с помощью gcc, а затем связавшись с окончательным приложением, созданным с помощью clang. Вы не сможете настроить таргетинг на 64-разрядные, поскольку llvm-gcc-4.2 не может генерировать код armv8, но он должен работать иначе.

Одно предупреждение: если ваш статический lib использует C++, могут возникнуть некоторые проблемы из-за различий в библиотеке ABI и std. Но это разрешимые проблемы, по крайней мере.

Смежные вопросы