ant*_*guy 7 c makefile compilation
我正在通过"以艰难的方式学习C"来学习C编程.我目前正在练习1,可以在这里找到:http://c.learncodethehardway.org/book/ex1.html
我理解所涵盖的概念,但不了解编译过程.在命令行中使用"make"命令时,为什么这样做:
$ make ex1
Run Code Online (Sandbox Code Playgroud)
这不起作用:
$ make ex1.c
Run Code Online (Sandbox Code Playgroud)
我实际上只是在一分钟前运行第二个命令.我最终想通了.直到我这样做,我不断收到此错误消息:
make: nothing to be done for 'ex1.c'
Run Code Online (Sandbox Code Playgroud)
虽然这只是一个技术性问题,但我仍然想知道发生了什么.谢谢 :)
Jon*_*ler 12
两者都有效; 他们只是做不同的任务.
make ex1.c说"使用makefile中的规则加上内置知识,确保文件ex1.c是最新的".
该make程序发现ex1.c并且没有规则可以从其他东西构建它(例如,没有RCS或SCCS源代码),因此它报告"什么都不做".
make ex1说"使用makefile中的规则加上内置知识,确保文件ex1是最新的".
该make程序发现它知道一种方式来创建一个可执行的ex1源文件ex1.c,所以它保证了源文件ex1.c是最新的(它的存在,所以它是最新的),然后可以确保ex1是最新的太(这意味着'文件ex1最近被修改过ex1.c).如果您在ex1.c上次运行后make进行了编辑,那么它将进行编译以使其ex1更新ex1.c.如果编译失败,该文件ex1将不存在,因此下次您将再次进行重新编译.一旦它是最新的,那么在您再次修改源之前make不会ex1再次重建.
这是make设计工作的方式.