如何使用 Makefile 使文件可执行
How to make a file executable using Makefile
我想使用 Makefile 复制特定文件,然后使该文件可执行。如何才能做到这一点?
我要复制的文件是一个 .pl 文件。
对于复制,我使用的是通用的 cp -rp 命令。这是成功完成的。但是现在我想使用 Makefile
使这个文件可执行
使用 cp
和 chmod
是一种不好的做法,而是使用 install
命令。
all:
install -m 0777 hello ../hello
您可以在安装时使用 -m
选项来设置权限模式,甚至请注意,使用 install
您不仅会保留权限,还会保留文件的所有者。
您仍然可以相应地使用 chmod,但这是一个不好的做法
all:
cp hello ../hello
chmod +x ../hello
更新:install vs cp
- cp 将简单地复制具有当前权限的文件,不仅安装副本,而且还可以将 perms/ownership 更改为 arg 标志。 (这就是您的要求)
- 一个显着差异是 cp 截断目标文件并开始将数据从源文件复制到目标文件中。另一方面,安装首先删除目标文件。
这很重要,因为如果目标文件已在使用中,那么如果您在其上 cp 一个新文件,则使用该文件的任何人都可能发生坏事。例如覆盖 运行 的可执行文件可能会失败。截断现有进程正忙 reading/writing 的数据文件可能会导致非常奇怪的行为。如果您只是先删除目标文件,就像安装一样,事情会像往常一样继续进行 - 直到所有进程关闭该文件后,才真正删除已删除的文件。[source]
有关详细信息,请查看这些,
我想使用 Makefile 复制特定文件,然后使该文件可执行。如何才能做到这一点? 我要复制的文件是一个 .pl 文件。 对于复制,我使用的是通用的 cp -rp 命令。这是成功完成的。但是现在我想使用 Makefile
使这个文件可执行使用 cp
和 chmod
是一种不好的做法,而是使用 install
命令。
all:
install -m 0777 hello ../hello
您可以在安装时使用 -m
选项来设置权限模式,甚至请注意,使用 install
您不仅会保留权限,还会保留文件的所有者。
您仍然可以相应地使用 chmod,但这是一个不好的做法
all:
cp hello ../hello
chmod +x ../hello
更新:install vs cp
- cp 将简单地复制具有当前权限的文件,不仅安装副本,而且还可以将 perms/ownership 更改为 arg 标志。 (这就是您的要求)
- 一个显着差异是 cp 截断目标文件并开始将数据从源文件复制到目标文件中。另一方面,安装首先删除目标文件。 这很重要,因为如果目标文件已在使用中,那么如果您在其上 cp 一个新文件,则使用该文件的任何人都可能发生坏事。例如覆盖 运行 的可执行文件可能会失败。截断现有进程正忙 reading/writing 的数据文件可能会导致非常奇怪的行为。如果您只是先删除目标文件,就像安装一样,事情会像往常一样继续进行 - 直到所有进程关闭该文件后,才真正删除已删除的文件。[source]
有关详细信息,请查看这些,