按照惯例,“make install”会更新它安装的目标吗?

时间:2010-03-26 11:04:08

标签: linux makefile

您通常会调用以下命令来构建./configure d产品:

make
make install

好的,该产品现在在系统中。然后,您更改一些源代码文件并仅调用make install。问题是,install目标的传统实现是否需要重新编译可执行文件,或者只应将旧文件复制到适当的系统路径?

3 个答案:

答案 0 :(得分:3)

make如果您的依赖关系设置正确,则按设计处理。

如果make构建名为helloworld的二进制文件。您可能会编写install目标,以便将此helloworld二进制文件从源目录复制到/usr/bin

这意味着安装目标应该依赖于helloworld二进制文件,这也意味着如果二进制文件helloworld不是最新的,它将被重新编译。当你输入make install时,你可以隐式调用make(这里是默认目标)。

答案 1 :(得分:3)

当然,这取决于你喜欢的传统。这是GNU convention

  

安装
  编译程序并将可执行文件,库等复制到它们应驻留的文件名中以供实际使用。

这似乎是明智的惯例:让make install安装过时的可执行文件通常只会导致混淆。

答案 2 :(得分:2)

是的,编写良好的makefile将install依赖于正在安装的可执行文件(或all),因此在安装之前它将确保可执行文件是最新的。

分裂有几个原因。通常,默认目标是all并且不安装文件,只构建它们。对于开发人员来说,这意味着他们可以轻松地在其工作环境中构建源代码,而不会影响其他系统。对于最终用户,这意味着他们可以作为普通用户运行构建,然后只以root身份运行make install

这确实意味着从技术上讲,make的{​​{1}}阶段是多余的。