GCC编译Objective-C源文件

  • 内容
  • 评论
  • 相关

本章主要讲的是使用 GCC 编译 Objective-C。

Objective-C 可以把它看成是 C 语言的扩充,同时它又支持类的使用,所以也是面向对象的编程语言,通常写作是 ObjC 或者是 OC。它主要用于 Mac OS X 和 GNU step 系统。因为 GCC 中包含 Objective-C 源程序的编译器,所以在 Linux 系统上可以开发这种编程语言。但是它与 GCC 编译的其它语言不同,Objective-C 在 GCC 中没有标准定义。
 
Objective-C相关的文件类型展示如下:

  • .a 为静态库文件,跟C/C++相同
  • .h 为头文件
  • .m 为需要预处理的 Objective-C 源文件
  • .mi 为不需要预处理的 Objective-C 源文件
  • .o 为适用于连接的目标文件格式
  • .so 为动态链接库文件

编译Objective-C源文件

从各种角度上看,Objective-C 程序与 C 程序在编写语法上非常的相似。可以说编写不包含对象的 Objective-C 程序与 C 程序的语法形式完全相同。

实例:创建一个 Objective-C 文件的源文件 test.m。

/*test.m*/
#import <stdio.h>
 
int main(void)
{
    printf("hello world\n");
    return 0;
}

编译源文件的命令如下:

gcc test.m -lobjc -o test

使用上面命令编译的时候可能会报错,如果出现下面的错误信息:

gcc: error trying to exec ‘cclobj’: execvp: 没有那个文件或目录

那是因为缺少了相关的库文件,可以通过如下的命令安装:

sudo apt-get install gobjc gnustep gnustep-devel

如果文件的语法格式没有出现错误,我们再去执行的时候就不会产生错误了。这就是使用 gcc 编译 Objective-C 源文件,编译时可以通过参数选项-Wno-import来禁止显示警告消息。
 
当然,我们也可以看到与 C 语言不同的地方,Objective-C 源程序包含头文件使用的是 #import 取代了关键字 #include。这两个关键字作用是相同的,但是 #import 不仅可以用来包含头文件,而且在编译相同单元的时侯不会被多次包括进来。如果想要利用 #include 来达到相同的效果,需要在头文件中使用条件编译。
 
选项-lobjc指出使用的库是 libobjc.a(Objective-C的对象库),但实际上对于没有对象的简单程序,这个选项并不是必须的。编译程序时,通过文件名的后缀名 .m 被识别为 Objective-C 源程序,选项-o用于指定输出文件的名字,默认的输出文件名也是 a.out。

编译包含对象的源文件

Objective-C编程语言是面向对象的编程语言,我们来看一下这种编程语言中类的创建和使用。

类方法在书写上有格式的要求,必须以加号(+)开头。使用时只能由类来调用,并且不能访问成员变量。

 

本文标题:GCC编译Objective-C源文件

本文地址:https://www.hosteonscn.com/7985.html

评论

0条评论

发表评论

邮箱地址不会被公开。 必填项已用*标注