【问题标题】:./configure and make: is there a common flag to the output filename, and what does --prefix do?./configure 和 make:输出文件名是否有通用标志,--prefix 有什么作用?
【发布时间】:2020-08-26 21:44:54
【问题描述】:

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

./configure

然后:

make install

我基本了解这些命令的作用,但有些细节对我来说仍然很不清楚。

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

  1. 这是所有或大部分配置脚本都遵循的规范或约定吗?

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

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

【问题讨论】:

  • 今后请考虑将您的问题限制为每个问题一个问题。这样你会得到更好的答案,而且不会触发 StackOverflow 使用版主。

标签: linux makefile configure


【解决方案1】:

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

这符合 Automake / Autoconf 打包约定,在 GNU coding standards 中有详细说明。

至于符号链接,它很可能遵循安装例程中固定的命名模式,无论是通过代码还是通过链接库名称。通常,链接库的名称是根据加载它们的程序而不是它们链接到的库来选择的,因此不建议更改名称。链接可能正在完成,因为您可能正在安装到 /usr/local/bin,并且库也可能正在安装到 /usr/local/lib<something> 路径中。如果没有更多细节(第二个问题应该是第二个帖子),很难对此发表评论。我想说更改名称可能对/usr/local/bin中的可执行文件不利

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-03-08
    • 1970-01-01
    • 1970-01-01
    • 2014-07-09
    • 1970-01-01
    • 1970-01-01
    • 2016-01-15
    相关资源
    最近更新 更多