Linux—用make进行宏编译

文章目录

  • 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.chaha.csin_value.ccos_value.c这4个文件。若是想要编译出一个可执行文件,则要经历如下步骤

  1. gcc -c main.c
  2. gcc - haha.c
  3. gcc -c sin value.c
  4. gcc -c cos value.c
  5. 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就可以直接清除掉编译产生的所有目标文件和可执行文件。

你可能感兴趣的:(Linux)