基于linux下的C语言学习 1---C程序过程分析

一、C语言程序运行过程
1.编辑

  • 选择一个适合的程序编辑软件,比如Notepad++,或者sublime编辑软件,更高级的有VSCode。

2.编译

  1. 预处理 :其过程为将头文件的具体内容从指定路径拷贝一份到当前程序中,若程序中有宏定义内容,则将宏定义展开,同时删除程序中的所有注释内容。生成一个后缀为.i的文件。
    命令为 gcc hello.c -E -o hello.i
  2. 编译 :其过程为检查源程序是否存在语法错误,如若通过检测,则将.i文件翻译成汇编文件。生成一个后缀为.s的文件。
    命令为 gcc -S hello.i -o hello.s
  3. 汇编 :其过程是将.s文件翻译成机器能识别的二进制目标文件。生成一个后缀为.o的文件。
    命令为 gcc -c hello.s -o hello.o
  4. 链接 :其过程是将此程序涉及到所有的目标文件即.o文件、库“粘合”在一起,得到最终的可执行文件。
    例:如果程序设计到了printf函数,则会生成对应的printf.o文件,链接过程就是将这些涉及到的.o文件全部链接在一起。
    命令为 gcc hello.o -o hello

3.运行

  1. 关于main函数的参数 main(int argc , char * argv[] )
  • argc 原意为argument count 翻译为 内容的数量。具体含义表示 传递给main函数的参数个数(几串字符)。
  • argv 原意为argument value 翻译为 内容的确切含义。具体存放的是传递给main函数的字符串的地址。
    argv[0] 保存着第0串字符串的首地址
    argv[1] 保存着第一串字符串的首地址。 …依次类推。
  1. 关于main函数的返回值
  • return 0 表示程序正确执行且正常退出
  • return -1 表示所执行程序权限不足
  • return -2 执行的文件不存在
  • return -3 执行代码错误
  1. 关于头文件的定义
  • #include “stdio.h” 双引号定义的头文件表示先从当前路径检索头文件,如若找不到,则进入标准C库中检索
  • #include 两个尖括号定义头文件表示直接从标准C库中检索头文件信息
  • 一般来说,自己定义的头文件则使用双引号,调用系统已经写好的函数则使用尖括号。如:stdio.h string.h 等。
  1. 关于C程序具体运行过程,会在后面章节给出

以上内容纯属个人观点,如有错误,欢迎纠正。

你可能感兴趣的:(笔记,linux,编程语言)