分享

在GNUstep Windows XP环境下学习Object

 oskycar 2012-08-14
最近在学习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文件如下:

###############################################################################
#
#    Filename    : Makefile
#    Description : 编译生成hello.exe
#
#    Date        : 2011-07-27 15:30
#
###############################################################################

CC = gcc
CFLAGS = -fconstant-string-class=NSConstantString
LFLAGS = -lobjc -lgnustep-base

LIB_HDRS = /GNUstep/System/Library/Headers
LIB_LIBS = /GNUstep/System/Library/Libraries

BIN = hello.exe

all : $(BIN)

$(BIN) : hello.o
 $(CC) -o $@ $< -L$(LIB_LIBS) $(LFLAGS)

hello.o : hello.m
 $(CC) -I$(LIB_HDRS) $(CFLAGS) -c $<

clean:
 rm -f $(BIN) *.o

 

        其中fconstant-string-class是gcc编译器专门针对Objective-C的一个选项,用于指定常量字符串所使用的类。其用法为:
                     -fconstant-string-class=class-name
如果不指定此项,默认的类名将是NXConstantString.

        最后,生成的可执行文件是hello.exe,后缀名.exe是否为必须的?我试着在Makefile中指定BIN为hello,但最终生成的依然为hello.exe。为了clean的方便,还是带上吧。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多