#ios #xcode #gcc
#iOS #xcode #gcc
Вопрос:
Я разрабатываю приложения для iOS и только что обновил свой Xcode до 4.2. Я вижу, что компилятор GCC 4.2 больше не доступен.
Могу ли я по-прежнему связывать свою статическую библиотеку, которая ранее была скомпилирована с помощью GCC 4.2? Вызовет ли это какие-либо проблемы?
Ответ №1:
Очень вероятно, да. Соглашения ABI не сильно меняются. Однако, поскольку это ваша статическая библиотека, я предполагаю, что у вас все еще есть ее исходный код. Тогда лучше перекомпилировать с помощью последнего компилятора (например, GCC 4.6) и с -Wall
флагом. Компилятор GCC улучшается от версии к версии (особенно начиная с версии 4.2, которой несколько лет), в соответствии со стандартами языка, в диагностических возможностях (улучшенные предупреждения) и в оптимизации.
Комментарии:
1. Спасибо 🙂 У меня есть исходный код, но эта библиотека также доступна другим. Я хочу убедиться, что она будет поддерживаться как текущей версией, так и более старыми версиями. Будет ли она поддерживаться в обоих случаях (пока она все еще скомпилирована с GCC 4.2)?
2. Вероятно, да, но я не могу быть уверен, и я предлагаю вам попробовать самостоятельно.
3. В качестве примечания, Apple отказалась от компилятора GCC в пользу LLVM по нескольким причинам. Вот почему GCC больше не доступен в качестве компилятора для IDE Xcode. Чтобы заставить GCC создавать и настраивать свои платформы, Apple сильно исправила версию 4.2 и не приложила усилий для переноса этих исправлений на более новые версии. Вот почему последней версией GCC, которая использовалась в Xcode, была 4.2. Вы правы, однако двоичная совместимость поддерживается со статическими библиотеками, созданными с использованием GCC 4.2 в новой версии Xcode, использующей LLVM.