Linux GCC 常用命令

一、GCC简介

Linux系统下的Gcc(GNU C Compiler)是GNU推出的功能强大、性能优越的多平台编译器,是GNU的代表作品之一。gcc是可以在多种硬体平台上编译出可执行程序的超级编译器,其执行效率与一般的编译器相比平均效率要高20%~30%。

Gcc编译器能将C、C++语言源程序、汇程式化序和目标程序编译、连接成可执行文件,如果没有给出可执行文件的名字,gcc将生成一个名为a.out的文件。在Linux系统中,可执行文件没有统一的后缀,系统从文件的属性来区分可执行文件和不可执行文件

二、简单编译

//main.c
include"stdio.h"
int main()
{
    printf("hello,world!");
    return 0;
}
  • 对于这个程序,一步到位的编译命令是:
gcc main.c 或 gcc main.c -o main

实质上,上述的编译过程是分为四个阶段进行的,即预处理(也称预编译,Preprocessing)、编译(Compilation)、汇编(Assembly)和连接(Linking)。

  • 预处理(Preprocessing)
gcc -E main.c 或 gcc -E main.c -o main.i

gcc的E选项,可以让编译器在预处理后停止,并输出预处理结果。前面这条指令,直接在命令行窗口输出预处理后的代码。后面这条指令,可以输出存放着经预处理后的代码的main.i文件。

  • 编译(Compilation)

预处理后,编译器可直接对生成的main.i文件编译,生成汇编代码:

gcc -S main.i

gcc的-S选项,表示在程序编译期间,在生成汇编代码后,停止。

  • 汇编(Assembly)

gas汇编器负责将生成的汇编代码文件main.s编译成目标文件:

gcc -c main.s

gcc的-c选项,表示将汇编代码编译成目标文件后停止。

  • 连接(Linking)

gcc连接器是gas提供的,负责将程序的目标文件与所需的所有附加的目标文件连接起来,最终生成可执行文件。附加的目标文件包括静态链接库和动态链接库。将生成的main.o文件与C标准输入输出库进行连接,最终生成程序main。

gcc main.o -o main

最后在命令行窗口中执行/.main,输出Hello,world!

三、多个程序文件的编译

通常整个程序是由多个源文件组成的,相应地也就形成了多个编译单元,使用GCC能够很好地管理这些编译单元。假设有一个由fun.c和 main.c两个源文件组成的程序,为了对它们进行编译,并最终生成可执行程序test,可以使用下面这条命令:

gcc fun.c main.c -o main

如果同时处理的文件不止一个,GCC仍然会按照预处理、编译和链接的过程依次进行。如果深究起来,上面这条命令大致相当于依次执行如下三条命令:

gcc -c main.c -o main.o
gcc -c fun.c -o main.o
gcc main.o fun.o -o main

假如源文件较多,编译工具Makefile,在命令行窗口执行make,即可完成预处理,编译,汇编,编译步骤,直接生成可执行文件。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值