在GNUstep+Windows XP环境下学习Object-C
2011-07-29 14:21
369 查看
最近在学习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的方便,还是带上吧。
刚开始以为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的方便,还是带上吧。
相关文章推荐
- Objective-C学习笔记1--windows+GNUstep环境下不能使用@autoreleasepool?
- Object-c学习之一,Windows下GNUstep编译环境配置及初编译
- TestLink学习二:Windows搭建TestLink环境
- Docker学习文档之一 安装软件-Windows环境
- 【GNU】WINDOWS平台之Objective-C开发(环境搭建)
- Tomcat学习—Tomcat7 修改/webapps/ROOT发布路径(Linux和windows环境)
- Android NDK学习(2)Windows下NDK开发环境配置
- 学习Object-C,GUNstep安装在windows上
- Windows XP+Apache 2.2.4+PHP 5.3.8+MySQL 5.5.17环境配置方法
- Java菜鸟学习笔记--配置篇(一):Windows JDK环境变量配置与常见问题
- 配置环境(windows XP+Eclipse 3.3+tomcat 6.0+lomboz3.3)
- Windows环境下QT学习笔记01:QT Creator下新建项目
- 【Windows中Spark环境搭建 | 基于Maven依赖库】在windows中对spark程序进行local调试学习
- 【深度学习】笔记14 windows下caffe的python接口的配置(数据的可视化环境)
- Go语言学习笔记(一) : 搭建Windows下的Go开发环境
- 学习笔记TF046:TensoFlow开发环境,Mac、Ubuntu/Linux、Windows,CPU版本、GPU版本
- vs2008+ddkwizard+wdk基于xp环境 windows驱动开发环境配置
- object-c学习(1)-window搭建object-c环境及编译
- TQ2440 学习笔记—— 1、Windows平台下开发工具安装与环境建立