黑马程序员技术交流社区

标题: 关于搭建 oc开发环境 linux下和win7下 MAC OS下 [打印本页]

作者: qibaozhen    时间: 2015-3-15 19:52
标题: 关于搭建 oc开发环境 linux下和win7下 MAC OS下
一 、Win7下环境搭建

1:  GNUstep

  首先,目前windows下没有Objective-C的IDE存在,ObjectiveEClipse是一款可选择的插件,搭配Eclipse3.5+CDT6.0,但是已经停止更新。GNUstep是提供类似Cocoa(苹果OS的开发框架)的API和工具,目前支持GNU/Linux and GNU/HURD, Solaris, NetBSD, OpenBSD, FreeBSD, Darwin和Windows,免费使

用。这个项目使Objective C能在多数流行平台上开发和运行。

  在Windows下搭建Objective C开发环境,需要到GNUstep官方网站上下载,四个软件包:GNUstep MSYS System、GNUstep Core、GNUstep Devel、Cairo Backend。其中,前两个软件包是必须要安装的,第三个软件包是安装一些开发工具,比如:gcc、g++等,所以如果是学习Objective C的话,这个包也是必须要安装,第四个软件包是安装glib等库,这个包安装不安装根据具体情况而定。

  地址:http://www.gnustep.org/experience/Windows.html 官网 自己在百度云搜索引擎上也可以搜索到下载速度要比官网快很多 http://pan.baidu.com/s/1eQrObxo


  安装后运行GNUstep shell也就是安装目录下的msys.bat。测试一下gcc与make命令。

2: 测试程序

test.m
1 #import <Foundation/Foundation.h>
2 int main (int argc, const char *argv[]) {
3 NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
4 NSLog(@"Hello World!");
5 [pool drain];
6 return 0;
7 }
复制代码
3: 编译链接

1)  直接gcc编译链接方式

gcc -o test test.m -I /GNUstep/System/Library/Headers -L /GNUstep/System/Library/Libraries -lobjc -lgnustep-base -fconstant-string-class=NSConstantString

其中:

-I /GNUstep/System/Library/Headers  指明编译期间头文件包含目录

-L /GNUstep/System/Library/Libraries 指明连接的库文件

-lobjc链接属性,这样就不必显示的链接libobjc.a库,gcc收到这个链接属性会为我们完成这些事。

-fconstant-string-class=NSConstantString指定常量字符串类型为NSConstantString

2) GNUmakefile方式

写GNUmakefile如下:

GNUSTEP_MAKEFILES=/GNUstep/System/Library/Makefiles

include $(GNUSTEP_MAKEFILES)/common.make

TOOL_NAME = test

test_OBJC_FILES = ./test.m

include $(GNUSTEP_MAKEFILES)/tool.make

解释:其中TOOL_NAME定义为工程名称test,test_OBJC_FILES定义编译文件列表

在GNUmakefile目录下执行make命令,得到可执行文件。

注: 这个makefile 在原来的版本上稍微做了一下修改,否则会编译不通过。

二、linux下搭建开发环境

下面列出来的包是安装GNUstep环境所必须的:

    * build-essential
    * gobjc
    * gobjc++
    * gnustep-devel

用 apt-get install 就可以搞定

本人怕麻烦就直接

sudo apt-get install gnustep*

这样会安装所有的 GNUstep的东西,所谓一劳永逸

2 hello world

这个是远近闻名的程序

#import
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

如果顺利通过,就会产生一个obj目录

$cd obj

$./hello

注:我遇到的问题是我的我的apt-get不好用,搞了几天也可以了

三、MAC OS下搭建开发环境:
      
我用的是虚拟机vmware10 和 mac os v10.7 xcode用的是4.2.3版本
       详细的可以参考 http://tieba.baidu.com/p/3049281951#;

也可以在网上直接下载安装好xcode的安装文件,这个比较好, 能省不少事情,
详细可以参考:http://bbs.pcbeta.com/viewthread-897468-1-3.html ;里面有下载地址,安装文件的压缩密码是helloword 账户密码是九个s 回复里面有 ,




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2