C语言编译到运行

C语言从源代码到可执行文件需要经过以下步骤
      C语言源代码->预处理->汇编->翻译->链接->计算机执行

预处理

      作用: 预编译过程主要处理源代码文件中以“#”开始的与编译指令
      命令:gcc -E hello.c :只做预处理,不做后续的动作。
什么是预处理命令?
      所有以“#”开头的语句,都叫做预处理语句。
以下显示了部分的预处理命令

#define bit(n) (1<<(n))
#define max(a,b) (((a)>(b))?(a):(b))
#undef
#include <stdio.h>
#if 0
#ifndef
#endif
#else
#elif
#ifdef
#line
#error
#parama

预处理宏:
LINE
FILE
TIME
DATE
STDC

汇编

      作用:将高级语言转换成汇编语言
      命令:gcc -S hello.c :只汇编,不翻译。

编译

      作用:编译器能够识别代码中的词汇、句子以及各种特定的格式,并将他们转换成计算机能够识别的二进制形式,这个过程称为编译(Compile)。C语言代码经过编译以后,并没有生成最终的可执行文件(.exe 文件),而是生成了一种叫做目标文件(Object File)的中间文件(或者说临时文件)。
      编译是针对一个源文件的,有多少个源文件就需要编译多少次,就会生成多少个目标文件。

      命令:gcc -c hello.c :只编译,不链接。

链接

       作用:编译只是将我们自己写的代码变成了二进制形式,它还需要和系统组件(比如标准库、动态链接库等)结合起来,这些组件都是程序运行所必须的。链接(Link)其实就是一个“打包”的过程,它将所有二进制形式的目标文件和系统组件组合成一个可执行文件。完成链接的过程也需要一个特殊的软件,叫做链接器(Linker)。
       命令:gcc *.o -o target

      多个源文件的编译

       1. 对每一个源文分别进行编译。gcc -c *.c -o *.o
       2. 最后统一链接。gcc *.o -o target

gcc命令参数

      -o :对输出的目标文件或可执行文件重命名。
      -c : 只编译不链接
      -I :指定头文件位置
      -L :指定库文件所在的位置
      -l :指定库文件名

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值