最近在学习Object-C,采用的编程环境是GNUstep+Windows XP SP3。首先下载并安装GNUstep,该过程比较顺利。然后照着《Programming in Objective-C 2.0》一书中的示例,敲出一个“hello,world!”,并保存为hello.m。接下来打开GNUstep的shell命令行,于是,问题来了。在shell中如何进入hello.m所在的目录? 刚开始以为GNUstep和cygwin一样,会有一个专门的目录来访问宿主机的各个盘符,最终也没找到。虽然可以在shell中调用vim再写一个hello.m程序并保存,但之前的功夫岂不是白费了! 在打开GNUstep的shell环境后,所处的位置为/home/Administrator,执行ls命令,里面什么也没有,再执行ls -la,看到了.inputrc。如果能够找到.inputrc在宿主机中的位置,就能搞清楚GNUstep的文件系统与宿主机的关系了。打开Windows XP的搜索框,在GNUstep所在的盘符下搜索.inputrc文件,发现它的绝对路径为D:\GNUstep\msys\1.0\home\Administrator\(我是将GNUstep安装到了D盘),然后定位到D:\GNUstep\msys\1.0\目录,发现GNUstep的文件系统就存放在这里。至此,基本弄明白了GNUstep与宿主机之间的关系了:shell中的/home/Administrator/即对应着宿主机的D:\GNUstep\msys\1.0\home\Administrator\,以此为参照,就可以定位其它目录在宿主机上的位置。 终于能够编译、链接并执行hello,world!了。可以直接在shell中执行gcc命令来生成最终的可执行文件,但要加上一大堆的参数,这么做容易出错,也没有记录下编译过程。网上有将编译命令写入shell脚本的,在此我采用make命令来实现。相关的Makefile文件如下: ############################################################################### CC = gcc LIB_HDRS = /GNUstep/System/Library/Headers BIN = hello.exe all : $(BIN) $(BIN) : hello.o hello.o : hello.m clean:
其中fconstant-string-class是gcc编译器专门针对Objective-C的一个选项,用于指定常量字符串所使用的类。其用法为: 最后,生成的可执行文件是hello.exe,后缀名.exe是否为必须的?我试着在Makefile中指定BIN为hello,但最终生成的依然为hello.exe。为了clean的方便,还是带上吧。 |
|
来自: oskycar > 《c\vc\opencv》