Как можно использовать Obj-C 2.0 с GNUstep?

Мне известно о существовании libobjc2, и я полагаю, что мне нужно будет использовать clang, а не GCC, но я не могу найти каких-либо основных инструкций о том, чем отличается процесс компиляции.

Может ли кто-нибудь дать четкие пошаговые инструкции по приобретению, настройке, компиляции и использованию GNUstep с Objective-C 2.0 в Ubuntu?


person andyvn22    schedule 11.11.2010    source источник
comment
Я до сих пор не нашел ответа на этот вопрос, но тем временем я переключился на Cocotron, и Obj-C 2.0 работает там просто отлично (наряду с NSXMLDocument и некоторыми другими вещами, которых мне не хватало в GNUstep). Конечно, это требует кросс-компиляции с Mac. :(   -  person andyvn22    schedule 19.01.2011


Ответы (2)


Поскольку Часто задаваемые вопросы по GNUStep ObjC2 уже упоминались, я предполагаю, что вы Посмотрите. Однако я хотел бы отметить следующее:

Для более продвинутых функций, которые в настоящее время поддерживаются только при компиляции с помощью Clang, вам потребуется среда выполнения GNUstep. В настоящее время это не считается готовым к производству. Он должен работать в качестве замены среды выполнения GCC, но некоторые расширенные функции недостаточно протестированы.

Часто задаваемые вопросы также упоминают следующее:

Если вы используете последнюю версию GCC для компиляции своего кода, у вас должна быть копия библиотеки времени выполнения Objective-C, поставляемой с вашим компилятором.

Если вы компилируете с флагом -fobjc-nonfragile-abi, вы будете использовать новый ABI. Это поддерживается только средой выполнения GNUstep. Это добавляет:

  • Самоанализ собственности
  • Самоанализ необязательных методов протокола
  • Нехрупкие переменные экземпляра
  • Поддержка перенаправления прокси

Итак, если вы ищете более старые функции через GCC, это руководство подойдет вам. красиво, как и этого. Вы явно заявили, что ищете сделайте это с помощью функций, предоставляемых Clang (через libobjc2), у которого есть собственная документация.

Получение релиза Clang и настройка кажутся довольно урезанными. Документ Начало работы с LLVM исключительно надежен (полный архив документации здесь), что должно дать представление о правильной настройке и компиляции серверной части. Дополнительную информацию об ожидаемой процедуре сборки можно найти на странице здесь.

Однако на момент написания этой статьи компиляция приложения Objective-C в Clang кажется крайне недостаточно документированной и непроверенной. По мере того, как функции становятся доступными, а кодовая база стабилизируется, я полагаю, что появится больше пользовательской документации.

person MrGomez    schedule 09.12.2010
comment
Спасибо за Ваш ответ. Теперь я успешно скомпилировал libobjc2 (мне пришлось скомпилировать clang из исходного кода, чтобы libobjc2 скомпилировался, как ни странно), и мне даже удалось скомпилировать gnustep-base и связать с libobjc2. К сожалению, любое использование NSObject (что бывает очень редко ;)) вызывает segfault. Я думаю, что, возможно, GNUstep просто еще не готов для использования обычными людьми (хотя говорят, что вся команда разработчиков проекта Etoilé успешно использует libobjc2; grr). - person andyvn22; 09.12.2010

Согласно GNUstep Wiki, вам нужно всего лишь скомпилировать свой код с помощью -fblocks и -fobjc-nonfragile-abi. Затем вы просто используете возможности языка в своем коде.

person Chuck    schedule 11.11.2010
comment
Я считаю, что процесс намного сложнее, чем это. Google предлагает перекомпилировать GNUstep make и GNUstep base с учетом libobjc2. - person andyvn22; 02.12.2010