现在的位置: 首页 > 综合 > 正文

linux下object c 环境安装

2013年10月12日 ⁄ 综合 ⁄ 共 2456字 ⁄ 字号 评论关闭

    因为一时心血来潮, 早上起床打开电脑后,给自己下了个任务, 搞定linux 下 object c 环境安装。
很自然的, 我搜索了下google, 找到了一篇文章《感谢老王的:Object-C之Windows版Hello, World!》,
这篇文章虽然是将如何在 windows 下面建立 object c 开发环境的, 我自己想,linux 比 windows 更接近于
mac, 在 linux 下面安装 object c 开发环境, 应该也很容易,于是开始动手了。 

 

   在 windows 下面, 需要用到 GNUstep, 那么, 在 linux 下面应该也是必不可少的,安装这种思维,我决定首先安装 GNUstep.

   1. 安装 gnustep

      搜先,搜索 gnustep 软件包

      apt-cache search gnustep

      一下子, linux 列出了很多相关的软件包,而且有一个的名字正好就是 gnustep,好不犹豫的, 我敲下了下面的命令

     apt-get install gnustep

     由于显示有一些缺失的东西没有安装,需要对系统更新一下,我于是先更新系统了。

     apt-get update

     在接下来, 我运行 apt-get install gnustep 时, 就没有任何问题了, 安装成功。

 

   2.  
接下来, 需要测试开发环境是否安装成功了。  我用文本编辑器, 敲下了 helloworld.m 的代码,如下:

     #import <Foundation/Foundation.h>ai

   
int main (int argc
, c
onst c
har *argv[]) {
        NSAutoreleasePool *pool = [[NSAutoreleasePool alloc
] init];
        NSLog(@"Hello World!");
        [pool drain];

        return 0;
   
}

      接下来, 我敲了下面的命令

      gcc -o helloworld helloworld.m -fconstant-string-class=NSConstantString

      显示下面的错误
gcc-4.2: error trying to exec 'cc1obj': execvp: No such file or directory

      直觉告诉我, cc1obj 缺失, 我于是敲
which cc1obj
显示这个命令并不存在。
而 apt-cache search cc1obj, 依旧一无所获。

 

     于是,我再次求助 google, 关键词是 cc1obj(我人比较懒,所以,都是能少敲一点就少敲了)
最后发现了一个链接 http://kubuntuforums.net/forums/index.php?topic=3098338.0
找到了解决方案,原来是有一个叫做 gobjc 的没有安装。我于是敲了下面的命令

   apt-get install gobjc

   接下来,继续编译
显示错误信息为

   helloworld.m:1:34: Foundation/Foundation.h: No such file or directory

 

   很明显, 头文件找不到,
我于是搜索,看本地是否有这个文件

   find / -name Foundation.h

   没有任何结果显示出来
直觉告诉我, gnustep 的头文件没有包含进来

   我于是敲 apt-cache search gnustep
发现里边列出的软件有这么一个, 也就是 gnustep-devel
这个应该是我需要安装的。
我于是敲了下面的命令

   apt-get install gnustep-devel

   接下来, 我输入 find / -name Foundation.h
显示 /usr/include/GNUstep/Foundation/Foundation.h
呵呵, 搞定。

   由于 Foundation.h  头文件是在 GNUstep 下面的, 因此编译的时候, 必须包含搜索头文件里,我敲了下面的命令

   gcc -o -I  /usr/include/GNUstep helloworld helloworld.m -fconstant-string-class=NSConstantString

 

   依旧存在错误,信息提示是有一些库没有链接进来, 导致一些函数没有实现。

 

    我查看了最开始的那篇文章, 上面的解决方案是包含库 objc 和 gnustep-base

    
find / -name libobjc.a

    显示 /usr/lib/gcc/i486-linux-gnu/4.3/libobjc.a

    find / -name libgnustep-base.a

    显示  /usr/lib/libgnustep-base.a

    直觉告诉我, 这两个库都在 linux 库径中, 因此, 只需要直接将这两个库编译进去就可以了。

    我于是敲了下面的命令

    gcc -o -I  /usr/include/GNUstep helloworld helloworld.m -fconstant-string-class=NSConstantString -lobjc  -lgnustep-base

 

    这次编译, 就没有任何错误了。

    接下来, 我敲了下面的命令:  

     ./helloworld

     显示 2010-08-21 04:25:16.083 helloworld[5627] Hello World!

 

     运行成功
也就是说, 第一个 object-c 程序搞定了。

 

     总结:

     在 linux 下面开发运行objec-c 程序, 需要安装的软件包括:

     gnustep, gnustep-devel, gobjc

     在编译的时候, 需要将 gnustep 的头文件路径 /usr/include/GNUstep 包含进去, 同时需要包含这么一句 -fconstant-string-class=NSConstantString, 在生产可执行文件的时候, 需要包含库 objc  和 gnustep-base.

 

 

 

抱歉!评论已关闭.