查看: 2075|回复: 0
打印 上一主题 下一主题

GNU/Linux平台的C程序开发及程序运行环境

[复制链接]
跳转到指定楼层
沙发
发表于 2015-6-1 20:53:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

本文介绍在GNU/Linux环境下一个C程序由源代码到程序,到加载运行,最后终止的过程。同时以此过程为载体,介绍GNU/Linux平台下软件开发工具的使用。以我们最常见的hello, world!为例:

#include <stdio.h>
main ()
{
      printf(&ldquo;hello, world!\n&rdquo;);
}

C程序生成

    下图是一个由C源代码转化为可执行文件的过程:


  
                                                 (点击可放大)
代码编辑: 比较流行的编辑器是GNU Emacs和vim。Emacs具有非常强大的功能,并且可扩展。


编译:包括编译预处理,编译,汇编,连接过程。它们都可以通过GCC来实现。

  C编译器将源文件转换为目标文件,如果有多个目标文件,编译器还将它们与所需的库相连接,生成可执行模块。当程序执行时,操作系统将可执行模块拷贝到内存中的程序映象。

程序又是如何执行的呢?执行中的程序称之为进程。程序转化为进程的步骤如下:

1,  内核将程序读入内存,为程序镜像分配内存空间。

2,  内核为该进程分配进程标志符(PID)。

3,  内核为该进程保存PID及相应的进程状态信息。

经过上述步骤,程序转变为进程,即可以被调度执行。

上述的hello, world程序实际是不规范的,POSIX规定main函数的原型为:

                    int main( int argc, char *argv[])
argc是命令行参数的个数,argv是一个指针数组,每个指针元素指向一个命令行参数。




本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?加入中科因仑

x
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 加入中科因仑

本版积分规则

快速回复 返回顶部 返回列表