0%

gcc常用命令

常用命令

1.首先是最常用的,源文件生成可执行文件

1
gcc main.c

默认生成a.out的可执行文件,main.c经历了预处理汇编编译链接操作

2. 指定输出文件的文件名 -o

1
gcc main.c -o main

生成可执行文件main

3. 预处理 -E

1
gcc -E main.c -o main.i

最简单的打印hello,world都要大几百行代码。预处理的作用是直接将#include<xxx.h>、#include”xxx.h”还有宏进行直接的复制粘贴操作.尖括号<>和双引号”“的区别在于,尖括号包含的头文件预处理器会直接搜索指定目录,双引号包含的头文件预处理器则优先在当前目录下查找。也就是系统的头文件我们一般都使用尖括号<>,自己定义的则使用双引号。gcc有选项可以更改目录,这里不再多说。

4. 编译生成汇编代码

1
gcc -S main.i

生成名为main.s的文本文件,里面是汇编语言。

5. 汇编

1
gcc -c main.s

汇编器将汇编代码转换成目标文件main.o

6. 链接

1
gcc main.o -o main

链接器将目标文件链接为可执行文件-o为优化等级,-O1、-O2、-O3,级别越大优化效果越好。

多文件编译方法

对于add.h、add.c、main.c三个文件

add.h

1
int add(int a,int b);

add.c

1
2
3
4
int add(int a, int b)
{
return a+b;
}

main.c

1
2
3
4
5
6
7
8
9
#include<stdio.h>
#include"add.h"
int main()
{
int a=5;
int b=10;
printf("a+b=%d\n",addd(a,b));
return 0;
}

1.直接源码到可执行文件

1
gcc main.c add.c -o main

生成名为main的可执行文件

2.分别编译各个源文件,然后进行链接

1
2
3
gcc -c add.c    #生成add.o
gcc -c main.c #生成main.o
gcc -o add.o main.o -o main #链接生成可执行文件

两种方法各有优缺点,第一种简便但是需要对所有文件进行重新编译,第二种方法可以只重新编译修改的文件,而不需要浪费时间重新编译整个工程。(详情请看另一篇介绍编译与链接的文章)

参考文章:linux gcc编译多个源文件的方法_yinjiabin的博客-CSDN博客