红薯 Windows 下使用 GNUstep 编译并运行 Objective-C 程序
来源:互联网 发布:yum install telnet 编辑:程序博客网 时间:2024/05/01 09:30
红薯 Windows 下使用 GNUstep 编译并运行 Objective-C 程序
今晚上开始看《Objective-C 程序设计(第4版)》这本书(OSChina 正在做此书的书评活动,详情请看这里),到现在为止看到第 7 章,于是想动手试试写两简单的程序编译跑跑看。
不习惯 Mac,在 Windows 下装了个 GNUstep 也可以玩。
非常简单的几步,你也来试试吧?
1. 下载并安装 GNUstep
下载地址:http://ftpmain.gnustep.org/pub/gnustep/binaries/windows/
有三个文件是必须安装的,分别是:
- gnustep-devel-1.4.0-setup.exe
- gnustep-core-0.31.0-setup.exe
- gnustep-msys-system-0.30.0-setup.exe
这里我下载的都是最新的版本,按默认方式将上面三个程序都安装在同一个目录,我用的是 D:\GNUstep 目录。
安装完毕后,打开:开始菜单 -> 所有程序 -> GNUstep -> Shell 就会进入一个类似 Linux 的 Shell 环境,如下图所示:
你可以自行一些简单的 Linux 命令,例如 ls、mkdir 等。
下面我们进入 /home 目录,然后创建一个 app1 的子目录:
cd /homemkdir app1cd app1
这个 app1 的目录位于磁盘上的 D:\GNUstep\msys\1.0\home\app1 目录下。
接下来我们写一个简单的程序:
#import <Foundation/Foundation.h>int main (int argc, const char *argv[]) {//@autoreleasepool {NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];NSLog(@"Hello oschina");[pool drain];//}return 0;}
说明:由于 GNUstep 带的 gcc 编译器不支持 Objective-C 2.0 ,因此不支持 @autoreleasepool 这个指令,我将它注释掉了。
然后我们用下面的命令来编译这个程序:
$ gcc -o app1 app1.m -I/GNUstep/System/Library/Headers -fconstant-string-class=NSConstantString -L/GNUstep/System/Library/Libraries -lobjc -lgnustep-base
上面这个命令除了 -o 后面的参数你可以更改,其他都必须照写,否则就会出错。
参数说明,如果熟悉Linux/Unix下C/C++编译的话,上述参数应该很熟悉,-I表示头文件查找的路径,-L表示库文件查找 路径,-l表示需要链接的库文件。但是,-fconstant-string-class=NSConstantString 对于这个参数可能比较陌生,这个参数主要是指定常量字符串所使用的class。
编译完就会在当前目录生成一个名为 app1.exe 的可执行程序。
输入 ./app1.exe 命令执行这个程序,执行结果:
2012-11-21 22:04:46.911 app1[4780] Hello oschina
就这么简单!至于代码中每一行的意思大家自己看书吧。
再来一个复杂一点的程序 app2,app2 包含三个文件,分别是:
Main.m:
#import "Calculate.h"int main(int argc, char *argv[]){NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];Calculate *cal = [[Calculate alloc] init];int v = 5;int av = 10;[cal setNum: v];[cal add: av];NSLog(@"%i + %i = %i\n", v, av, [cal num]);[pool drain];return 0;}
Calculate.h:
//Calculate.h#import <Foundation/Foundation.h>@interface Calculate : NSObject{@private int num;}-(int) num;-(void) setNum: (int) n;-(void) add: (int) n;@end
Calculate.m:
#import "Calculate.h"@implementation Calculate-(int) num{return num;}-(void) setNum: (int) n{num = n;}-(void) add: (int) n{num += n;}@end编译方法更上面一样,只不过需要将两个 .m 文件都加进去:
$ gcc -o app2 Main.m Calculate.m -I/GNUstep/System/Library/Headers -fconstant-string-class=NSConstantString -L/GNUstep/System/Library/Libraries -lobjc -lgnustep-base运行结果: 2012-11-21 22:17:51.207 app2[3144] 5 + 10 = 15现在的问题是:有没有办法让 GNUstep 支持 Objective-C 2.0 呢?官网上有描述这个问题,需要使用Clang 编译器,不知道如何搞定!
- 红薯 Windows 下使用 GNUstep 编译并运行 Objective-C 程序
- Windows 下使用 GNUstep 编译并运行 Objective-C 程序
- Windows 下使用 GNUstep 编译并运行 Objective-C 程序
- Windows 下使用 GNUstep 编译并运行 Objective-C 程序
- Windows 下使用 GNUstep 编译并运行 Objective-C 程序
- Windows系统中使用GNUstep 编译运行Objective-C程序
- windows下使用gnustep编译objective-c程序
- Windows下搭建GNUstep环境以及编译运行Objective-C
- 在 Windows 上安装和使用 GNUstep编译Objective-C
- Windows下使用GNUstep编写Object-C程序
- Linux下学objective c的好办法,在ubuntu下使用GNUstep make编译objective c
- 在Windows下搭建Objective-C运行环境(感谢GNUstep)
- objective-c : windows下搭建环境并编译自己的第一个objective-c程序
- Objective-C学习笔记1--windows+GNUstep环境下不能使用@autoreleasepool?
- 用GNUstep在windows下执行objective -c
- 在Windows上使用GNUstep和Objective-C
- 在 Windows 上安装和使用 GNUstep 和 Objective-C
- 在 Windows 上安装和使用 GNUstep 和 Objective-C
- 如何调用Android隐藏API
- JAVA系列-设计模式-中介者模式
- C# 索引器
- GTK编程初谈
- IOS的后台运行
- 红薯 Windows 下使用 GNUstep 编译并运行 Objective-C 程序
- 【装机吧】Win7电脑系统32位和64位区别(详细版)
- Hay Day系统设计沉思录——操作序列与网络
- 人事和程序员分别是怎样读简历的
- C++ - 类的赋值操作 使用 "复制-交换(copy and swap) 技术" 详解
- 论DWR在Java Web快速开发中的重要性
- 【库函数】linux之getuid和getpwuid函数
- iOS应用程序生命周期(前后台切换,应用的各种状态)详解
- 如何用O(n)时间复杂度查找第k大数的优化算法 C++程序