1.gcc组成
gcc是一组编译工具的总称,包含:C编译器、C++编译器、源码预处理程序和库文件。
2.gcc编译
1.生成一个程序
gcc hello.c -o hello
把hello.c编译成一个可执行程序、
gcc hello.c
不指定输出名,生成一个a.out文件。
通过./hello
或者./a.out
来运行程序。
2.gcc编译程序步骤
预处理:gcc -E hello.c -o hello.i
完成对代码的预处理
编译:gcc -S hello.i -o hello.s
将源代码编译成汇编代码
汇编:gcc -c hello.c -o hello.o
将汇编代码转换成目标文件(二进制)
链接:gcc hello.o -o hello
将目标代码和所需要的库链成一个完整的应用程序。
gcc的结果输出是后缀名不相关的,只与输入参数有关。
3.使用多个源码的项目
如果项目中包含2个以上的源代码,一般要先各自将源代码编译成目标代码。最后一次链接成可执行程序。
若头文件在多个目录:需要在编译时多次使用-I
参数加入头文件所在目录。
gcc -I. -I/usr/include -I/home/hxy -c test_link.c -o ...
也可以选择在头文件中,直接写明头文件的相对位置。但是尽量不要这样做。
3.练习gcc多源码项目编译
请开发一个程序,使用结构定义:
struct student {
int no;
char name[64];
float height;
}
要求创建3个学生定义,并给三个学生的三个成员都赋值。
写一个show函数依次把所有学生信息显示。
提示:创建一个工程student目录,将结构体类型、show()函数原型写到show.h,将show()定义写到show.c里,main()写到main.c里,*.h文件放到include目录下,*.c文件放到source目录下。
*.h文件一般存放的都是函数定义和全局变量,对于*.c文件和*.h文件应该如何处理,题目中描述的非常清楚。下面是操作步骤:
new@ubuntu:~$ cd Desktop
new@ubuntu:~/Desktop$ mkdir student
new@ubuntu:~/Desktop$ cd student
new@ubunt