Linux 编译安装中的 configure 命令


用了这么久的 Linux 系统,也许你会发现,在编译安装中,有的服务编译安装需要执行 configure 命令,而有的却不需要,这是为什么呢?也是不是像我一样一头雾水呢?其实这取决于服务的构建系统和配置方式,以下是两个常见情况:

  1. 自动配置系统(Autotools)

    许多开源项目使用 Autotools 作为构建系统,它们通常包括 configure.acconfigure.in 文件。在这种情况下,你需要运行 ./configure 命令,它会检查系统环境、配置编译选项,并生成一个 Makefile 文件,用于后续编译和安装步骤。

    然后运行 make 编译源代码,最后运行 make install 安装软件。

  2. CMake 构建

    一些项目使用 CMake 作为构建系统,它们通常包括 CMakeLists.txt 文件。在这种情况下,你不需要运行 ./configure 命令,而是使用 cmake 命令来生成构建文件。

    然后运行 make 编译源代码,最后运行 make install 安装软件。

这里顺便说一下就是,像二进制服务安装其实就是预先进行了编译(configure 或 cmake)且编译生成了二进制文件,其实就是省略了编译安装这一步。因此,我们只需要将二进制文件拷贝至我们操作系统对应的目录下即可(如 /usr/bin/ 或 /usr/local/bin 下)。

再举个例子,我下载了 redis 源码安装包并解压,如下图所示,该源码包中已经有一个 Makefile 文件了,只需要我们 make && make PREFIX=/usr/local install 即可,其实这就是官方已经帮我们 configure 过了,所以说这就是为什么要根据你的操作系统来下载对应的安装包,否则就会安装失败。

在这里说明一下就是:当你使用 ./configure --prefix=/home/data 执行完成后,又 make PREFIX=/usr/local install,那最终的安装路径(即存放二进制、动态库文件等)是以哪个为准呢?如果你在 make install 命令中指定了 PREFIX 参数,它通常会覆盖 configure 中指定的值。所以,为了避免混淆和错误,通常情况下,你应该在 configure 中指定正确的 --prefix,然后直接运行 make install

那如果在执行 ./configuremake install 时都没有指定安装目录,那服务安装完成后,目录又在哪里呢?这种情况下,软件包的安装目录通常会默认为系统的标准安装目录,通常是 /usr/local/usr,具体取决于软件包的默认配置和系统上的默认设置。在大多数情况下,如果没有指定安装目录,软件包将会按照以下约定安装:

  • 可执行文件将被安装到 /usr/local/bin/usr/bin
  • 库文件将被安装到 /usr/local/lib/usr/lib
  • 头文件将被安装到 /usr/local/include/usr/include
  • 配置文件和其他资源文件可能会分散在 /etc/usr/local/etc 或其他位置。

以上就是一些也许可能大概比较简单的常见问题,但还是希望能够帮助正在阅读文章的你!

---END

相关推荐
翼龙云_cloud6 分钟前
云代理商:Hermes Agent在量化交易中的实战应用
运维·服务器·人工智能·ai智能体·hermes agent
ch3nyuyu13 分钟前
网络编程拟面试题
linux·网络
霸道流氓气质17 分钟前
批量收集多源 URL 并异步转 PDF 打包下载的完整实现(Spring Boot + Feign + 异步任务)
windows·spring boot·pdf
无限进步_20 分钟前
【Linux】Makefile:让编译自动化
linux·运维·自动化
圆粥綠23 分钟前
【保姆级】国内Windows用户Android Studio下载+安装+配置完整教程(2026最新版,避坑指南)
android·windows·android studio
猫头虎23 分钟前
【Trea】Trea国内版|国际版|海外版下载|Mac版|Windows版|Linux下载配置教程
linux·人工智能·windows·macos·aigc·ai编程·agi
Jinkxs23 分钟前
LoadBalancer- 简单限流策略:Nginx 基于连接 / 请求的限流实现
java·运维·nginx
流浪00131 分钟前
告别静态打印:Linux C 实现实时刷新进度条
linux·运维·c语言
qq_1969761733 分钟前
硬核教程:用Gemini境像站构建端到端自动化办公工作流,告别重复操作(国内免费镜像实测)
运维·自动化
小此方34 分钟前
Re:Linux系统篇(二十)进程篇·五:深入理解 Linux 进程优先级:从底层逻辑到实战修改
linux·运维·服务器