文章目录
gcc的简易用法
为什么要用make
makefile的基本语法与变量
gcc的简易用法
gcc - c hello.c:会自动生成hello.o这个文件,但并不会生成可执行文件
gcc -O helo.c -c:会自动的生成hello.o这个文件,并进行优化
gcc -o hello hello.c:-o后面接的是要输出binary file文件名
gcc -o hello hello.c -Wall:加入-Wall之后,程序的编译会变得较为严谨一些,警告信息也会显示出来
为什么要用make
假设现在有main.c、haha.c、sin_value.c、cos_value.c这4个文件。若是想要编译出一个可执行文件,则要经历如下步骤
gcc -c main.c
gcc - haha.c
gcc -c sin value.c
gcc -c cos value.c
gcc -o main main.o haha.o sin value.o cos value.o -lm -L/usr/lib -L/lib
可以看出编译的过程十分的繁琐,而且如果要重新编译,则上面的步骤都得重新来一次。
那么使用make工具就能完美解决这个问题。那么要使用make就得先配置makefile。
以上面的例子为例:
main: main.o haha.o sin value.o cos value.o
gcc -o main main.o haha.o sin value.o cos value.o -lm
编写makefile文件之后,只需要在makefile目录下执行make命令即可。
make的优点:
简化编译时所需要执行的命令
若在编译完成之后,修改了某个源码文件,make仅会针对被修改了的文件进行编译,其他的目标文件不会被更改。
最后可以依照相依性来更新执行文件
makefile的基本语法与变量
makefile文件的基本规则如下:
target: targetFile1 targetFile2
gcc -o excutableFile targetFile2 targetFile2
那个target就是我们想要建立的信息,而目标文件(targetFile)就是具有相关性的Object file。命令行必须要以tab按键作为开头才行。
在makefile中的“#”代表注释
tab按键需要在命令行的第一个字符
目标(target)与相关文件(目标文件)之间需以":"隔开
还可以在makefile文件中添加clean操作。
main: main.o haha.o sin value.o cos value.o
gcc -o main main.o haha.o sin value.o cos value.o -lm
clean: rm -f main main.o haha.o cos value.o sin value.o
只需要执行make clean就可以直接清除掉编译产生的所有目标文件和可执行文件。