本文介绍了“如何在linux下使用make命令”的知识。很多人在实际案例的操作中都会遇到这样的困难,那么就让主机频道带领你学习如何应对这些情况吧!希望你能认真阅读,有所收获!
make如何工作对于不了解其背后机制的人来说,make命令像命令行参数一样接收目标。这些目标通常存储在一个名为“makefile”的特殊文件中,该文件还包含与目标相对应的操作。有关更多信息,请阅读关于makefiles如何工作的系列文章。
第一次执行make命令时,它会扫描makefile来查找目标及其依赖项。如果这些依赖项本身就是目标,那么继续扫描makefile来寻找这些依赖项,以建立它们的依赖项,然后编译它们。一旦编译了主依赖项,就编译了主目标(这是通过make命令传入的)。
现在,假设你修改了一个源文件,你再次执行make命令,它只会编译与源文件相关的目标文件,这样就节省了很多时间来编译最终的可执行文件。
Make命令示例以下是本文中使用的测试环境:
os —— ubunut 13.04
shell —— bash 4.2.45
Application-GNU Make 3.81以下是项目的内容:
$ ls
another test . c makefile test . c test . h以下是makefile的内容:
全部:测试
测试:test.o另一个测试
gcc-墙测试。o另一个测试。o -o测试
测试. o:测试. c
gcc-c-墙测试
另一个测试
gcc -c -wall另一项测试
清洁:
Rm -rf *。o测试现在我们来看一些在linux下应用make命令的例子:
1.简单的例子
为了编译整个项目,只需在make命令后使用make或bring the target。
$ make
gcc-c-墙测试
gcc -c -wall另一项测试
gcc-墙壁测试。另一个测试。o-o测试你可以看到make命令第一次创建的依赖项和实际的目标。
如果你再看看目录的内容,还有一些。o文件和可执行文件:
$ ls
又一次测试。生成文件测试。c测。h测试。现在,假设你对测试做了一些修改。c文件并重用make编译项目:
$ make
gcc-c-墙测试
Gcc-wall test.o另一个test.o-o test你可以看到只有test.o被重新编译了,而另一个test.o没有被重新编译。
现在清理所有的目标文件和可执行文件测试,你可以使用目标清理:
$清洁
rm -rf *。o测试
$ ls
另一个测试。makefile测试。你可以看到所有的。o文件和执行文件测试已被删除。
2.通过-b选项使所有目标总是重新建立。
到目前为止,您可能注意到make命令不会编译自上次编译以来没有更改过的文件,但是如果您想覆盖make的默认行为,可以使用-b选项。
这里有一个例子:
$ make
make:不为“所有人”做任何事情& # 39;。
$ make -b
gcc-c-墙测试
gcc -c -wall另一项测试
gcc-墙壁测试。另一个测试。o-o测试你可以看到,虽然make命令不会编译任何文件,但是make -b会强制编译所有的目标文件和最终执行文件。
3.使用-d选项打印调试信息。
如果想知道make执行时实际做了什么,可以使用-d选项。
这是一个例子:
$ make -d |更多
gnu make 3.81
版权所有(c) 2006自由软件基金会。
这是自由软件;复制条件见出处。
没有保修;甚至不是为了适销性或适合
特殊目的。
这个程序是为x86_64-pc-linux-gnu构建的
正在读取生成文件…
正在读取makefile `makefile & # 39…
正在更新生成文件…
考虑目标文件` makefile & # 39。
寻找“makefile & # 39。
用词干“makefile & # 39。
正在尝试隐式先决条件` makefile.o & # 39。
用词干“makefile & # 39。
正在尝试隐式先决条件“makefile.c & # 39。
用词干“makefile & # 39。
正在尝试隐式先决条件“makefile.cc & # 39。
用词干“makefile & # 39。
正在尝试隐式先决条件“makefile.c & # 39。
用词干“makefile & # 39。
正在尝试隐式先决条件“makefile.cpp & # 39。
用词干“makefile & # 39。
- more -这是一个很长的输出,您可以看到我使用了more命令来逐页显示输出。
4.使用-c选项来更改目录
您可以为make命令提供不同的目录路径,并且您将在查找makefile之前切换目录。
这是一个目录,假设您在当前目录中:
$ ls
文件file 2 frnd frnd 1 . CPP log 1 . txt log 3 . txt log 5 . txt
File1文件名带有空格frnd1frnd.cpplog2.txtlog4.txt但是您要运行的make命令的makefile保存在../make-dir/目录。您可以这样做:
$ make -c../make-dir/
make:进入目录`/home/himan Shu/practice/make-dir & # 39;
make:不为“所有人”做任何事情& # 39;。
Make:离开目录`/home/himan Shu/practice/make-dir您可以看到make命令首先剪切到一个特定的目录,在那里执行它,然后切换回来。
5.使用-f选项将其他文件视为makefile。
如果你想重命名makefile,比如my_makefile或者其他名字,我们希望make把它当作一个makefile,你可以使用-f选项。
Make -f my_Makefile这样,make命令会选择扫描my_makefile而不是makefile。
评论前必须登录!
注册