本文介绍“如何在linux下使用make命令”的知识。很多人在实际案例的操作中都会遇到这样的困难,那么就让主机频道带领大家学习如何应对这些情况吧!希望你能认真阅读,有所收获!
make如何工作对于那些不知道其背后机制的人来说,make命令像命令行参数一样接收目标。这些目标通常存储在一个名为“makefile”的特殊文件中,该文件还包含与这些目标相对应的操作。有关更多信息,请阅读一系列关于makefiles如何工作的文章。
第一次执行make命令时,它会扫描makefile以查找目标及其依赖项。如果这些依赖项本身就是目标,则继续扫描makefile以找到这些依赖项,从而建立它们的依赖项,然后编译它们。一旦编译了主依赖项,就编译了主目标(这是通过make命令传入的)。
现在,假设您修改了一个源文件,并且您再次执行make命令,它将只编译与源文件相关的目标文件,因此可以节省大量时间来编译最终的可执行文件。
Make命令示例以下是本文中使用的测试环境:
操作系统——ub nut 13.04
shell —— bash 4.2.45
应用程序-GNU Make 3.81以下是项目的内容:
$ ls
another test . c makefile test . c test . h以下是makefile的内容:
全部:测试
测试:test.o另一个测试。o
gcc-墙测试。另一个测试。o -o测试
测试。o:测试。c
墙测试
另一项测试
gcc-c-墙另一项测试
清洁:
Rm -rf *。o测试现在我们来看一些在linux下应用make命令的示例:
1.一个简单的例子
为了编译整个项目,您可以简单地在make命令后使用make或bring the target all。
$ make
墙测试
gcc-c-墙另一项测试
gcc-墙壁测试。o另一项测试。o-o测试您可以看到由make命令首次创建的依赖项和实际目标。
如果你再看看目录的内容,还有一些。o文件和可执行文件:
$ ls
又一次测试。o生成文件测试。c测试。h测试。o现在,假设您对测试进行了一些更改。c文件并重用编译项目:
$ make
墙测试
Gcc-wall test.o另一个test.o-o测试您可以看到只有test.o被重新编译,但另一个test.o没有被重新编译。
现在清理所有的目标文件和可执行文件测试,你可以使用目标清理:
$清洁
rm -rf *。o测试
$ ls
另一个测试。生成文件测试。你可以看到所有的。o文件和执行文件测试已被删除。
2.通过-b选项始终重新建立所有目标。
到目前为止,您可能注意到make命令不会编译自上次编译以来没有更改的文件,但是如果您想覆盖make的默认行为,可以使用-b选项。
这里有一个例子:
$ make
make:不为“所有人”做任何事情。。
$ make -b
墙测试
gcc-c-墙另一项测试
gcc-墙壁测试。o另一项测试。o-o测试您可以看到,尽管make命令不会编译任何文件,但make -b会强制编译所有目标文件和最终执行文件。
3.使用-d选项打印调试信息。
如果您想知道make执行时实际做了什么,请使用-d选项。
这是一个例子:
$ make -d |更多
gnu make 3.81
版权所有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
文件名中带有空格frnd1frnd.cpplog2.txtlog4.txt但是您要运行的make命令的makefile文件保存在../make-dir/目录。您可以这样做:
$ make -c../make-dir/
make:进入目录`/ home/himan Shu/practice/make-dir & # 39;
make:不为“所有人”做任何事情。。
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。
评论前必须登录!
注册