./configure 和 make:输出文件名是否有通用标志,--prefix 有什么作用?

./configure and make: is there a common flag to the output filename, and what does --prefix do?

有时我必须直接从源代码编译我需要的工具和应用程序。其中大多数(我正在使用 linux),需要 运行 配置脚本:

./configure

之后:

make install

这些命令的作用我基本明白了,但是有些细节我还是不太明白

这两个步骤通常会导致最终创建一个二进制文件,该文件位于 ./src 目录中(但并非总是如此)。我还注意到我可以在配置脚本上使用“--prefix=/path”来设置安装最终包的前缀目录(当 运行ning: make install 时)。

  1. 这是所有或大多数配置脚本遵循的规范或惯例吗?

我还注意到很多次 运行 宁 make install 时,/usr/local/bin(或类似)中的符号链接被创建到安装位置的二进制文件。

  1. 配置脚本是否也有一个共同的标志,为这个符号链接选择一个不同的名称?
  2. 是否有通用标志来定义二进制文件的输出名称?

--prefix=/path 重新定位安装路径的许多组件。通常 prefix 的默认值为 /usr/local,导致二进制可执行文件被安装到 ${prefix}/bin。如果您希望将它们安装在系统路径中,您可以设置 --prefix=/usr 然后可执行文件将进入 /usr/bin

这符合 Automake / Autoconf 打包约定,详见 GNU coding standards

至于 symlink,很可能它遵循安装例程中固定的命名模式,通过代码或 linked 库名称。通常 linked 库的名称是根据加载它们的程序选择的,而不是它们 link 到的库,因此不建议更改名称。 linking 可能正在完成,因为您可能正在安装到 /usr/local/bin,并且库也可能正在安装到 /usr/local/lib<something> 路径。没有进一步的细节(第二个问题应该是第二个 post),很难对此发表评论。我想说更改名称可能对 /usr/local/bin

中的可执行文件不利

是的,您可以使用 --program-prefix=value 命令更改可执行文件的输出名称,在我的示例中,该命令将安装 valuecp 而不是 cp