我正在通过“艰难地学习 C”来学习 C 编程。我目前正在做练习 1,可以在这里找到:http://c.learncodethehardway.org/book/ex1.html
我了解所涵盖的概念,但不了解编译过程。在命令行中使用“make”命令时,为什么会这样:
$ make ex1
这行不通:
$ make ex1.c
直到一分钟之前,我实际上只是在运行第二个命令。我最终想通了。在我这样做之前,我一直收到此错误消息:
make: nothing to be done for 'ex1.c'
虽然这只是一个技术问题,但我仍然想知道发生了什么。谢谢:)
最佳答案
两者都有效;他们只是执行不同的任务。
make ex1.c
表示“使用 makefile 中的规则加上内置知识,确保文件ex1.c
是最新的” .make
程序找到ex1.c
并且没有从其他东西构建它的规则(例如,没有 RCS 或 SCCS 源代码),所以它报告 '无事可做”。make ex1
表示“使用 makefile 中的规则加上内置知识,确保文件ex1
是最新的”。make
程序发现它知道从源文件ex1.c
创建可执行文件ex1
的方法,因此它确保源文件ex1.c
是最新的(它存在,所以它是最新的),然后确保ex1
也是最新的(这意味着'文件ex1
比ex1.c
最近修改过)。如果您在上次运行make
后编辑过ex1.c
,它将进行编译以使ex1
比ex1 更新。 C
。如果编译失败,ex1
文件将不存在,所以下次您将再次重新编译。一旦它是最新的,make
将不会再次重建ex1
,直到您再次修改源代码。
这就是 make
设计的工作方式。
关于c - 使用 "make"C 编程(艰难地学习 C),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15602496/