1.GCC简介
文件扩展名:
*.c:该类文件为C语言的源文件
*.h:该类文件为C语言的头文件
*.i:该类文件为预处理后的C文件
*.cc:该类文件为C++语言的源文件
*.cpp:该类文件为C++语言的源文件
*.s:该类文件为汇编语言的源文件
*.o:该类文件为汇编后的目标文件
*.a:该类文件为静态库
*.so:该类文件为共享库
a.out:该类文件为链接后的输出文件
进行程序编译的时候,头文件路径和库文件路径是编译器默认查找的地方
头文件:/usr/local/include,/usr/lib/gcc/i486-linux-gnu/4.1.2/include,/usr/include
库文件:/usr/lib/gcc/i486-linux-gnu/4.1.2/ ,......,/lib,/usr/lib
2.编译程序的基本知识
GCC编译器将预编译、编译和优化、汇编、链接这4个步骤合并为1个。
目标文件是指经过编译器的编译生成的CPU可识别的二进制代码,但是目标文件一般不能执行,因为其中的一些函数过程没有相关的指示和说明。可执行文件就是目标文件与相关的库链接后的文件,它是可以执行的。
所有的目标文件必须用某种方式组合起来才能运行,这就是链接的作用。目标文件中通常仅解析了文件内部的变量和函数,对于引用的函数和变量还没有解析,这需要将其他已经编写好的目标文件引用进来将没有解析的变量和函数进行解析,通常引用的目标就是库。链接完成后会生成可执行文件。
3.单个文件编程成可执行文件
gcc -o hello hello.c
GCC先将C文件编译成目标文件,然后将目标文件链接成可执行文件,最后删除目标文件。-o选项表示可以使编译程序生成指定的可执行文件名,如果没有-o选项,则默认生成a.out。
4.编译生成目标文件
gcc -c hello.c
会生成一个hello.o的目标文件
gcc -c -o test.o hello.c
生成一个test.o的目标文件
gcc -c file1.c file2.c file3.c
生成3个file1.o file2.o和file3.o
5.多文件编译
GCC可以自动编译多个文件,不管是目标文件还是源文件,都可以使用同一个命令编译到可执行文件中。
源文件string.c,包含了用于计算的S