碰到这行代码时,我正在Linux中学习C编程
$ make ex1
cc ex1.c -o ex1
我的问题是为什么我们必须使用make ex1
?不是cc
命令来构建程序和其他必要的文件。
答案 0 :(得分:3)
除了一小部分非常简单的问题外,几乎所有现实生活中的C程序都将由多个模块,头文件,外部库构建,有时跨越多个文件夹。在某些情况下,可以使用其他工具(例如代码生成器)链接其他代码。
在这种情况下,单个“ cc”命令将不起作用。下一个解决方案将是使用构建脚本自动化构建。但是,这可能很耗时,而且几乎无法维护。
对于构建“ C”程序,Make除了提供简单的shell生成脚本之外,还提供了许多好处。这是我个人的“前三名”
不用说,还有其他构建工具可以提供其他/替代的好处。 CMake,gradle,SCons等。
答案 1 :(得分:1)
对于一个文件项目,它们的结果大致相同。但是,现实世界中的项目往往具有数十个,数百个或数千个文件,并可能建立具有不同设置等的数十个或数百个库和可执行文件。在没有将编译命令存储在某处的情况下管理所有这些都是不可能的,因此需要一个Makefile是一个非常有用的“某处”。
make的另一个重要特性是它对文件进行时间戳检查,并且仅重新运行其输出已过时的编译/链接命令,即,至少其中一个输入比输出更新。如果不进行此类检查,则您必须手动记住在更改某些内容时要重新编译哪些文件(尤其是在更改后的文件为标头时尤其困难),或者始终重新编译所有内容,从而将构建时间增加几个数量级。