一个简单的范例:
经过上面的介绍之后,您应该比较清楚的知道原始码、编译器、函式库与执行档之间的相关性了。 不过,详细的流程可能还是不很清楚,所以,在这里我们以一个简单的程式范例来说明整个编译的过程喔!赶紧进入 Linux 系统,实地的操作一下底下的范例呢!
印出 Hello World
我们以 Linux 上面最常见的 C 语言来撰写第一支程式!第一支程式最常作的就是..... 在萤幕上面印出‘Hello World!’的字样~当然, 这里我们是以简单的 C 语言来撰写,如果您对于 C 有兴趣的话,那么请自行购买相关的书籍喔! ^_^好了,不啰唆,立刻编辑第一支程式吧! ( 请先确认您的 Linux 系统里面已经安装了 gcc 了喔!如果尚未安装 gcc 的话,请先参考下一节的 RPM 安装法,先安装好 gcc 之后,再回来阅读本章 )
# 1. 先编辑原始码:
[root@linux ~]# vi hello.c <==注意一下, C 语言用 .c 的副档名
#include
int main(void)
{
printf("Hello World\n");
}
# 上面是 C 语言的语法,那个第一行的 # 并不是注解喔!如果您担心
# 输入错误,请到底下的连结下载这个档案:
#
# 2. 开始将原始码编译成为可执行的 binary file :
[root@linux ~]# gcc hello.c
# 这个时候,在本目录下会产生一个名为 a.out 的执行档!
# 在预设的状态下,如果我们直接以 gcc 编译原始码,并且没有加上
# 任何参数,则 执行档的档名会被自动设定为 a.out 这个档案名称!
# 3. 执行一下这个档案:
[root@linux ~]# ./a.out
Hello World <==呵呵!成果出现了!
好了,上面的例子很简单吧!那个 hello.c 就是原始码,而 gcc 就是编译器,至于 a.out 就是编译成功的可执行 binary file 啰!咦!如果我想要产生目标档( object file )来进行其他的动作( 在较大的套件当中, 就需要使用多个目标档来进行相关的连结),而且执行档的档名也不要用预设的 a.out ,那该如何是好?可以将上面的第 2 个步骤改成这样:
[root@linux ~]# gcc -c hello.c
# 会产生一个名为 hello.o 的目标档,object file 的副档名为 *.o 喔!
[root@linux ~]# gcc -o hello hello.o
# 这个步骤是利用 hello.o 这个目标档制作出一个名为 hello 的执行档
# 详细的 gcc 语法我们会在后续章节中继续介绍!
# 透过这个动作后,我们可以得到 hello 及 hello.o 两个档案,
# 真正可以执行的是 hello 这个 binary file 喔!
# 3. 执行一下这个档案:
[root@linux ~]# ./hello
Hello World
或许您会觉得,咦!只要一个动作作出 a.out 就好了,干嘛还要先制作目标档再做成执行档呢?! 呵呵!透过下个范例,您就可以知道为什么啦!
阅读(838) | 评论(0) | 转发(0) |