目录
前言:
什么是GCC:
特点:
源文件需要经过编译才能够生成可执行文件,在Windows下进行开发的时候,只需要几个按键就可以编译,集成的开发环境(V Studio,keil,clion等)已经将各种编译工具封装好了,linux中虽然有一些集成好的编译器,但是对于嵌入式软件开发的时候,通常没有屏幕,只能通过指令进行程序的编写和调试。但是要编译出来的程序可以在ARM上运行,就必须使用交叉编译器xxx-gcc等。
GCC编译过程:
一个c/c++文件要经过四个过程才能变成可执行文件。
- 预编译(Pre-Processing)
- 编译(Compiling)
- 汇编(Assembling)
- 链接(Linking)
预处理:
编译阶段:
汇编:
链接阶段
GCC的常见使用
//gcc使用示例
gcc hello.c // 输出一个名为 a.out的可执行程序,然后可以执行./a.out
gcc -o hello hello.c // 输出名为 hello的可执行程序,然后可以执行./hello
gcc -o hello hello.c -static // 静态链接
gcc -c -o hello.o hello.c // 先编译(不链接)
gcc -o hello hello.o // 再链接
执行“gcc -o test1 test1.c -v”的时候可以看到这写步骤
常用编译选项:
多文件编译
//一次性编译
gcc -o main hello.c main.c //生成可执行文件main
//独立编译
gcc -Wall -c-o main.o main.c
gcc -Wall -c -o hello.o hello.c
gcc -Wall -o main main.o hello.o
制作动态库:
静态库:
文章参考:
GCC基本使用 - 知乎 (zhihu.com)
Linux编译工具:gcc入门 - melonstreet - 博客园 (cnblogs.com)