Как стать автором
Обновить

Objective-C и Linux

Objective-C и Linux



Хотелось бы поделиться опытом разработки на Objective-C на linux.

Я использовал Archlinux, но и с другими дистрибутивами проблем быть не должно.

Все подробности смотрите под катом.


Причины для подобной связки могут быть разные, и сразу скажу такую вещь. Все, с кем я общался, рекомендуют использовать Mac. В моем случае, я всего лишь хотел познакомиться с языком, поэтому приобретение еще одного компьютера посчитал излишним.

Необходимые программы


Первым делом, нам нужно установить компилятор GCC

На Archlinux это делается следующим образом:

pacman -S gcc
Вам могут понадобиться права root: sudo pacman -S gcc, в данном случае

После этого, необходимо установить Obkective-C фронтенд для GCC
pacman -S gcc-objc

Казалось бы, что все в порядке, приступим к написанию кода.

В качестве редактора я использую Gedit, в котором подсветка синтаксиса есть «из-коробки», так же я установил набор плагинов, в число которых входит встроенный терминал, сниппеты и прочие вкусности.

//main.m
int main( int argc, const char * argv[]){
return 0;
}


Попробуем скомпилировать:

gcc main.m -lobjc

На данном этапе все должно работать.

Первая проблема

Поигравшись некоторое время с кодом, я обнаружил, что библиотеки OpenStep отсутствуют

Для решения нужно написать в терминале следующее:
pacman -S gnustep

Pacman предложит вам выбрать из 4 пакетов, выбирайте все.

Проверим следующий код:

//main.m
#import <Foundation/Foundation.h>

int main( int argc, const char * argv[]){
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
NSLog(@"Hello, World");
[pool drain]
return 0;
}

Тут же компилятор выдает ошибку, NXConstantString ему не знаком. Так и должно быть, ведь мы не сказали компилятору о том, где нужно искать новые библиотеки.

Чтобы не писать их каждый раз, я предлагаю создать Makefile

//Makefile
CC = gcc
CFLAGS = -lobjc -std=c99 -I /usr/lib/GNUStep/System/Library/Headers \
-L /usr/lib/GNUStep/System/Library/Libraries -lgnustep-base \
-fconstant-string-class=NSConstantString
OBJECTS = main.o

main.exe : $(OBJECTS)
$(CC) $(CFLAGS) $(OBJECTS) - o main.exe

main.o : main.m
$(CC) $(CFLAGS) -c main.m


Обратите внимание, что вместо четырех пробелов, нужно использовать один символ табуляции
Набираем в консоли: make
У меня этот код скомпилировался, но NSLog выдало некую ошибку, исправить которую можно следующим образом:

TZ='WS-U'
export TZ


Поздравляю, теперь вы можете смело писать программы на Objective-C!
Теги:
Хабы:
Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.