温习一波GCC

GCC

GCC是GNU Compiler Collection的缩写,跨平台编译器集合。
支持C,C++,Java等语言。

C的编译

  1. 预处理
  2. 编译:生成汇编语言.s文件
  3. 汇编:生成目标代码.o文件
  4. 链接:生成可执行程序

    一步完事

1
GCC main.c

这一条指令直接生成可执行程序a.out,一步完事,不生成.s和.o文件

1
GCC main.c -o Main

这一条指定生成文件名为Main,也就是-o可以指定输出文件名。

一步步来

1
GCC -S main.s -o main.s

这一条生成main.s汇编源程序,也就是汇编。

1
2
3
4
5
GCC -c main.c -o main.o



GCC -c main.s -o main.o

这一条生成main.o目标文件,也就是执行编译和汇编两个步骤。
可以用.c或者预处理编译之后生成的.s文件。

1
GCC main.o -o main

这一条生成可执行程序main,最后一步:链接。

对于多个.c源文件的程序,也可以一步完成

1
GCC main.c hello.c -o test

或者一步步来

1
2
3
GCC -c main.c -o main.o
GCC -c hello.c -o hello.o
GCC main.o hello.o -o test

其他option

1
GCC -E main.c -o main_mod.c

预处理指令,去除注释,展开头文件,宏替换。

1
GCC main.c -static -o main

静态编译,包含所用到的所有的库。

END

这些只是目前我用到的。。。比较浅,主要还是用autoconf。
binutils的使用,静态库和动态库的生成改天再看。

Author

lyq1996

Posted on

2018-09-27

Updated on

2022-08-15

Licensed under

Comments