Ubuntu下Object-c的开发环境搭建:
1.安装gnustep和gobjc
sudo apt-get install gobjc gnustep gnustep-devel
2.Hello World
#import <Foundation/Foundation.h>
int main(char argc, char* argv[]) {
NSLog(@"hello world");
return 0;
}
错误1:
$ gcc `gnustep-config --objc-flags` hello.m -o hello
hello.m:3:5: warning: first argument of ‘main’ should be ‘int’ [-Wmain]
/tmp/ccx3pWOU.o: In function `main':
/home/tercel/workspace/objectc/hello.m:4: undefined reference to `NSLog'
/tmp/ccx3pWOU.o: In function `__objc_gnu_init':
/home/tercel/workspace/objectc/hello.m:6: undefined reference to `__objc_exec_class'
/tmp/ccx3pWOU.o:(.data.rel+0x0): undefined reference to `__objc_class_name_NSConstantString'
collect2: ld returned 1 exit status
tercel@tercel-pc:~/workspace/objectc$ gcc `gnustep-config --objc-flags` -lgnustep-base hello.m -o hello
hello.m:3:5: warning: first argument of ‘main’ should be ‘int’ [-Wmain]
/tmp/ccAOmFM3.o: In function `main':
/home/tercel/workspace/objectc/hello.m:4: undefined reference to `NSLog'
/tmp/ccAOmFM3.o: In function `__objc_gnu_init':
/home/tercel/workspace/objectc/hello.m:6: undefined reference to `__objc_exec_class'
/tmp/ccAOmFM3.o:(.data.rel+0x0): undefined reference to `__objc_class_name_NSConstantString'
collect2: ld returned 1 exit status
错误2:
$ gcc `gnustep-config --objc-flags` -lgnustep-base hello.m -o hello
hello.m:3:5: warning: first argument of ‘main’ should be ‘int’ [-Wmain]
/tmp/ccAOmFM3.o: In function `main':
/home/tercel/workspace/objectc/hello.m:4: undefined reference to `NSLog'
/tmp/ccAOmFM3.o: In function `__objc_gnu_init':
/home/tercel/workspace/objectc/hello.m:6: undefined reference to `__objc_exec_class'
/tmp/ccAOmFM3.o:(.data.rel+0x0): undefined reference to `__objc_class_name_NSConstantString'
collect2: ld returned 1 exit status
成功:
$ gcc `gnustep-config --objc-flags` hello.m -o hello -lgnustep-base
$ ./hello
2013-01-24 15:25:12.748 hello[15962] hello world
$
注意: 错误2 几乎和 成功 一样,就是 -l位置不一样,原因何在?