如何使用 Makefile 使文件可执行

How to make a file executable using Makefile

我想使用 Makefile 复制特定文件,然后使该文件可执行。如何才能做到这一点? 我要复制的文件是一个 .pl 文件。 对于复制,我使用的是通用的 cp -rp 命令。这是成功完成的。但是现在我想使用 Makefile

使这个文件可执行

使用 cpchmod 是一种不好的做法,而是使用 install 命令。

all:
    install -m 0777 hello ../hello

您可以在安装时使用 -m 选项来设置权限模式,甚至请注意,使用 install 您不仅会保留权限,还会保留文件的所有者。

您仍然可以相应地使用 chmod,但这是一个不好的做法

all:
    cp hello ../hello
    chmod +x ../hello

更新:install vs cp

  1. cp 将简单地复制具有当前权限的文件,不仅安装副本,而且还可以将 perms/ownership 更改为 arg 标志。 (这就是您的要求)
  2. 一个显着差异是 cp 截断目标文件并开始将数据从源文件复制到目标文件中。另一方面,安装首先删除目标文件。 这很重要,因为如果目标文件已在使用中,那么如果您在其上 cp 一个新文件,则使用该文件的任何人都可能发生坏事。例如覆盖 运行 的可执行文件可能会失败。截断现有进程正忙 reading/writing 的数据文件可能会导致非常奇怪的行为。如果您只是先删除目标文件,就像安装一样,事情会像往常一样继续进行 - 直到所有进程关闭该文件后,才真正删除已删除的文件。[source]

有关详细信息,请查看这些,

install vs. cp; and mmap

How is install -c different from cp