在linux环境下 编译C/C++文件需要使用gcc或者make的编译软件进行编译
编译有三个过程:预编译---->编译----->链接 预编译的过程就是将c/c++文件的头文件包含到代码的过程 编译就是将文件变成机器代码 链接就是将代码中使用的各个函数库的机器代码进行链接变成可执行文件
1:首先学习预编译 gcc -o out.c -E src.c
这是hello.c的源文件内容
如:gcc -o shao.c -E hello.c
可以看一下预编译后生成的文件内容
内容就是将stdio.h 和 stdlib.h文件拷贝到shao.c中
预编译结束后就要进行编译文件:gcc -o out.o -c src.c
如gcc -o hello.o -c hello.c 就会生成hello.c的机器代码 真是顺序是:生成汇编语言 然后生成机器代码 这里就省略生成汇编语言的过程
机器代码生成后通过链接命令生成可执行文件 gcc -o out src.o....
如gcc -o hello hello.o
执行编译完成后的可执行文件./hello
到这里 一个c文件就被我们用gcc成功编译成功啦~~到这只是体验了预编译和编译的过程,那么为很么需要链接的过程才能生成可执行文件,链接就是将源代码中用到其他库函数的代码链接到编译生成的机器代码:
如更改hello.c代码,使用到另一个add.c中的add(int a,int b)的方法,如果不把add.c编译成add.o文件,直接使用gcc -o hello hello.c生成的可执行文件会报错,因为add()方法的机器代码没有链接进来,所以第三部需要gcc -o hello hello.o add.o链接完成后生成的hello可执行文件才能执行:
如图:
使用的add()方法是add.c中的代码,需要执行gcc -o hello.o -c hello.c 和 gcc -o add.o -c add.c 生成add.o 和 hello.o的机器代码
然后使用第三个步骤gcc -o hello add.o hello.o 进行链接生成可执行文件hello才能运行
如果不进行add.o直接编译gcc -o hello hello.o 的话可执行文件不能运行
二: 到这基本的预编译-->编译-->链接的过程都熟悉了 下面学习make编译的使用
在真实项目中不使用gcc进行编译 文件太多不够方便,可以把make理解为批处理编译,我要将项目中的.c文件与.o文件关联然后生成可执行文件,完整的makefile文件内容如下:
执行make命令会自动执行当前目录下的makefile文件:效果如图
‘
这样编译项目的话会很快。如果对makefile文件内容不太理解的话,由于时间问题还是去看看makefile编译的语法规范
OK Just Like ! Just Do IT!