Ubuntu上安装make命令并使⽤makefile⽂件简化操作
make命令作⽤:
  对于⼀个包括⼏百个源⽂件的应⽤程序,使⽤make和makefile⼯具就可以简洁明快地理顺各个源⽂件之间纷繁复杂的相互关系。⽽且如此多的源⽂件,如果每次都要键⼊gcc命令进⾏编译的话,那对程序员来说简直就是⼀场灾难。⽽make⼯具则可⾃动完成编译⼯作,并且可以只对程序员在上次编译后修改过的部分进⾏编译。因此,有效的利⽤make和makefile⼯具可以⼤⼤提⾼项⽬开发的效率。
make命令下载:
先更新到ubuntu-make
sudo apt-get update
sudo apt-get install ubuntu-make
再下载(我Ubuntu上直接有make命令,所以我没使⽤上⾯那两个命令,运⾏下⾯命令我的make命令更新到了最新版本)sudo apt-get install make
gcc编译过程:
对⼀个test.c⽂件进⾏编译⾸先需要使⽤下⾯命令makefile phony
gcc -c test.c
使源⽂件变成*.o⽂件
之后使⽤下⾯命令
gcc - test.o
这条命令的作⽤就是指出可执⾏⽂件(因为Linux上可执⾏⽂件不需要exe结尾,所以你也可以换⼀个其他名字)的⽣成需要test.o⽂件(如果需要更多*.o⽂件在后⾯列出就可以)
make如何⼯作:
make在当前⽬录下寻“Makefile”或“makefile”⽂件
若到,查⽂件中的第⼀个⽬标⽂件.o
若⽬标⽂件不存在,根据依赖关系查.s⽂件
若.s⽂件不存在,根据依赖关系查.i⽂件
若.i⽂件不存在,根据依赖关系查.c⽂件,此时.c⽂件⼀定存在,于是⽣成⼀个.o⽂件,再去执⾏
makefile⽂件格式:
<target>: <prerequisites>
[Tab]<commands>
第⼀⾏冒号前为⽬标,冒号后为前置条件;第⼆⾏必须由⼀个Tab键起⾸,后接命令;⽬标是必须的,不可省略;前置条件和命令是可选的,但两者必须⾄少存在⼀个。
⽰例:
<: test2.o
gcc - test2.o
test2.o: test2.c
gcc -c test2.c
这意味着⽣成需要前置条件test2.o,⽣成test.o需要前置条件test2.c
1、test.c⽂件存在所以会执⾏下⾯的代码 gcc -c test2.c
2、test.o⽂件存在所以会执⾏下⾯代码    gcc - test2.o
这样写的限制:⽤⼀个Makefile同时编译多个.c⽂件并⽣成可执⾏⽂件需要添加⼀个伪可执⾏⽂件。makefile 默认只⽣成第⼀个可执⾏⽂件,所以可以⽤伪可执⾏⽂件,make 过程中并不⽣成这个伪可执⾏⽂件,在如下代码中,all就是⼀个伪执⾏⽂件。
#makefile
CC=gcc
all:test1 test2
.PHONY:all
test2 :test2.o
$(CC) -o $@ $<
test1 :test1.o
$(CC) -o $@ $<
test2.o:test2.c
$(CC) -o $@ -c $<
test1.o:test1.c
$(CC) -o $@ -c $<
clean:
rm -rf test1 test2 test1.o test2.o
.PHONY:all clean
make的⼀些选项:
1、-f
直接运⾏make命令会在当前⽂件夹下寻makefile或者Makefile⽂件,你可以通过-f选项来改变这种默认特性
make -f my_makefile
make 命令会选择扫描 my_makefile 来代替 Makefile。
2、-C
你可以为 make 命令提供不同的⽬录路径,在寻 Makefile 之前会切换⽬录的。这是⼀个⽬录,假设你就在当前⽬录下: $ ls
file file2 frnd1.cpp
但是你想运⾏的 make 命令的 Makefile ⽂件保存在 ../make-dir/ ⽬录下,你可以这样做:
$ make -C ../make-dir/
make 命令⾸先切到特定的⽬录下,在那执⾏,然后再切换回来。
3、-B
make -B 会强制编译所有的⽬标⽂件以及最终的执⾏⽂件。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。