最近看了很多文章,互聯網發達今天,想找一篇對的文章還真TM難, 再次BS一下,那些不知所云就轉貼的豎子,本來以為很簡單的 objective c 在 gcc上的編譯問題,因為gcc很本就可以支持objective c 的,花了兩天的時間搞定, 不得不再次感嘆互聯網的強大
gcc是可以,但是不用GNUstep 而寫obj c 是沒有什么意義,如果用GNUstep 那gcc老的方法就會有問題,最煩人的就是
Foundation/Foundation.h: No such file or directory
這個錯誤
閑言少表,來點直接的
1安裝 / install GNUstep on ubuntu
下面列出來的包是安裝GNUstep環境所必須的:
build-essential
gobjc
gobjc++
gnustep-devel
用 apt-get install 就可以搞定
本人怕麻煩就直接
sudo apt-get install gnustep*
這樣會安裝所有的 GNUstep的東西,所謂一勞永逸
2 hello world
這個是遠近聞名的程序
#import <Foundation/Foundation.h>
int main(int argc, const char *argv[]) {
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
NSLog(@”Hello world\n”);
[pool drain];
return 0;
}
保存為 hello.m
這個時候你嘗試用gcc 去編譯是會出錯的
gcc -o hello hello.m
fatal error: Foundation/Foundation.h: No such file or directory
因為你用了foundation的庫,gcc不知道
3 make
我們現在要用GNUstep的方式即makefile的方式來編譯,GNUstep已經給我們做好了編譯腳本在: /usr/share/GNUstep/Makefiles/GNUstep.sh
我們現在就要用到它,先做一個環境變量 就叫 GNUSTEP_MAKEFILES 當然名字隨你起
打開 .bashrc(如果不知道在哪,就去找找)
$ cd
$ vim .bashrc
在最下面添加
#set GNUstep
GNUSTEP_MAKEFILES=/usr/share/GNUstep.sh
export GNUSTEP_MAKEFILES
source /usr/share/GNUstep/Makefiles/GNUstep.sh
然后回到hello.m的目錄
創建文件GNUmakefile 必須叫這名
添加
include $(GNUSTEP_MAKEFILES)/common.make
TOOL_NAME = LogTest
LogTest_OBJC_FILES = source.m
include $(GNUSTEP_MAKEFILES)/tool.make
保存
然后,直接運行
$make
原文鏈接:http://www.software8.co/caozuoxt/Ubuntu/3660.html