Я изучаю язык Objective-C. Поскольку у меня нет Mac, я компилирую и запускаю свой код на платформе Ubuntu 11.04.
До сих пор я использовал gcc для компиляции. Я установил GNUStep и все работало. Но затем я начал пробовать некоторые функции Objective-C 2.0, такие как @property и @synthesize, которые gcc не разрешает.
Поэтому я попытался скомпилировать код с помощью Clang, но, похоже, он неправильно связывает мой код с библиотеками GNUStep, даже с простой программой Hello world.
Например, если я скомпилирую следующий код:
#import <Foundation/Foundation.h>
int main(void) {
NSLog(@"Hello world!");
return 0;
}
Выходные данные компилятора:
/tmp/cc-dHZIp1.o: In function `main':
test.m:(.text+0x1f): undefined reference to `NSLog'
/tmp/cc-dHZIp1.o: In function `.objc_load_function':
test.m:(.text+0x3c): undefined reference to `__objc_exec_class'
collect2: ld returned 1 exit status
clang: error: linker (via gcc) command failed with exit code 1 (use -v to see invocation)
Команда, которую я использую для компиляции:
clang -I /usr/include/GNUstep/ test.m -o test
с директивой -I для включения библиотек GNUStep (в противном случае Clang не сможет найти Foundation.h).
Я погуглил свою проблему и посетил веб-страницы GNUStep и Clang, но я не нашел решения. Так что любая помощь будет оценена.
Спасибо!