Linux ./configure --prefix命令

配置选项在源码安装中的作用与重要性
本文详细介绍了源码安装过程中配置(configure)步骤的重要性,特别是使用--prefix选项来指定安装目录的好处。它能简化软件的维护、卸载及移植,并通过实例演示了如何使用此选项进行安装。

http://blog.youkuaiyun.com/xiyangfan/archive/2010/02/24/5321790.aspx

http://blog.dormforce.net/rox/2008/09/26/configure-prefixxxx%E7%9A%84%E4%BD%9C%E7%94%A8/

源码的安装一般由3个步骤组成:配置(configure)、编译(make)、安装(make install),具体的安装方法一般作者都会给出文档,这里主要讨论配置(configure)。Configure是一个可执行脚本,它有很多选项,使用命令./configure –help输出详细的选项列表,如下:
-bash-3.00# ./configure --help
Usage: configure [options] [host]
Options: [defaults in brackets after descriptions]
Configuration:
--cache-file=FILE     cache test results in FILE
--help             print this message
--no-create         do not create output files
--quiet, --silent     do not print `checking...' messages
--version           print the version of autoconf that created configure
Directory and file names:
--prefix=PREFIX       install architecture-independent files in PREFIX
                [/usr/local]
--exec-prefix=EPREFIX   install architecture-dependent files in EPREFIX
                [same as prefix]
--bindir=DIR         user executables in DIR [EPREFIX/bin]
……….(省略若干)
很多的选项,个人认为,你可以忽略其他的一切,但请把—prefix加上。这里以安装supersparrow-0.0.0为例,我们打算把它安装到目录 /usr/local/supersparrow,于是在supersparrow-0.0.0目录执行带选项的脚本./configure --prefix=/usr/local/supersparrow,执行成功后再编译、安装(make,make install);安装完成将自动生成目录supersparrow,而且该软件所有的文件都被复制到这个目录。为什么要指定这个安装目录?是为了以后的维护方便,如果没有用这个选项,安装过程结束后,该软件所需的软件被复制到不同的系统目录下,很难弄清楚到底复制了那些文件、都复制到哪里去了—基本上是一塌糊涂。

用了—prefix选项的另一个好处是卸载软件或移植软件。当某个安装的软件不再需要时,只须简单的删除该安装目录,就可以把软件卸载得干干净净;移植软件只需拷贝整个目录到另外一个机器即可(相同的操作系统)。

一个小选项有这么方便的作用,建议在实际工作中多多使用

---不指定prefix,可执行文件默认放在/usr /local/bin,库文件默认放在/usr/local/lib,配置文件默认放在/usr/local/etc。其它的资源文件放在/usr /local/share。要卸载这个程序,要么在原来的make目录下用一次make uninstall(前提是make文件指定过uninstall),要么去上述目录里面把相关的文件一个个手工删掉。
指定prefix,直接删掉一个文件夹就够了。

<think> 我们正在讨论的是Linux环境下编译安装Python时使用的配置命令:`./configure --prefix=/opt/python3.7` 这个命令是在解压Python源代码包后,进入源码目录执行的配置步骤。 1. 命令分解: - `./configure`:运行当前目录下的configure脚本,该脚本是GNU Autotools工具链的一部分,用于检测系统环境(如编译器、库文件、头文件等)并生成Makefile- `--prefix=/opt/python3.7`:指定软件安装的根目录。这里表示将Python安装到`/opt/python3.7`目录下。 2. 作用: - 环境检测:检查系统是否具备编译Python所需的各种依赖(如编译器、库文件等)。 - 生成Makefile:根据检测结果生成适合当前系统的Makefile,用于后续的编译(make)和安装(make install)。 - 指定安装路径:通过`--prefix`参数设置Python的安装目录。如果没有指定,默认安装路径通常是`/usr/local`。 3. 目录结构说明: 当指定`--prefix=/opt/python3.7`后,安装完成后的目录结构如下: - `/opt/python3.7/bin`:可执行文件(如python3、pip3等) - `/opt/python3.7/lib`:Python库文件(包括标准库和第三方库) - `/opt/python3.7/include`:头文件(用于开发Python扩展) - `/opt/python3.7/share`:共享数据(如文档、示例等) 4. 使用场景: - 需要将软件安装到非默认路径(例如:没有root权限时安装到用户目录,或者需要多版本并存时)。 - 避免覆盖系统自带的Python版本(很多Linux发行版依赖系统自带的Python)。 - 方便卸载:直接删除安装目录即可完全卸载。 5. 后续步骤: 配置完成后,通常执行: `make` # 编译源代码 `make install`# 将编译好的文件复制到`--prefix`指定的目录 6. 环境变量配置: 安装完成后,为了能在任意目录使用新安装的Python,需要将安装路径下的`bin`目录加入`PATH`环境变量: `export PATH="/opt/python3.7/bin:$PATH"` 可以将该行添加到`~/.bashrc`文件中以便永久生效。 7. 示例: 假设我们在用户的主目录下编译安装Python3.7,可以指定: `./configure --prefix=$HOME/python3.7` 这样安装后,Python将位于用户目录下,不需要root权限。 8. 注意事项: - 确保有足够的权限在目标路径(如`/opt/python3.7`)创建目录和文件。通常需要sudo权限来安装到系统目录(如`/opt`)。 - 如果遇到依赖问题(如缺少zlib、openssl等),需要先安装相应的开发包(例如:在Ubuntu上安装`libssl-dev`,在CentOS上安装`openssl-devel`)。 9. 引用说明: 在用户提供的引用中,他们使用了类似的配置命令(`./configure --prefix=/usr/local/python3`),随后进行了编译安装[^1]。这证实了该命令在Python源码安装中的核心作用。 10. 常见问题: 如果配置过程中出现错误,通常会在终端输出错误信息,常见的比如缺少开发包。例如,缺少SSL模块会导致无法使用pip安装https源的包,如引用[2]中提到的问题[^2]。 11. 多版本共存: 通过指定不同的`--prefix`路径,可以在同一台机器上安装多个Python版本,并通过绝对路径或修改PATH来切换使用。 总结:`./configure --prefix=/opt/python3.7`命令为编译安装Python做好环境准备,并指定了安装位置,是源码安装的关键步骤。 §§相关问题§§ 1. 如何解决`./configure`过程中出现的依赖缺失问题? 2. 编译安装Python时如何启用SSL支持? 3. 如何在同一系统中管理多个Python版本? </think> ### `./configure --prefix=/opt/python3.7` 命令详解 #### 一、命令分解解析 1. **`./configure`**: - 运行当前目录下的 `configure` 配置脚本 - **核心作用**:检测系统环境(编译器、库文件等)并生成 `Makefile` 文件 - 执行流程: ```mermaid graph LR A[执行configure脚本] --> B[检查编译器gcc] B --> C[检查依赖库zlib/openssl] C --> D[检测系统架构] D --> E[生成Makefile] ``` 2. **`--prefix=/opt/python3.7`**: - 指定安装路径参数 - **路径结构**: ``` /opt/python3.7 ├── bin/ # 可执行文件 (python3, pip3) ├── lib/ # 库文件 (python3.7m.so) ├── include/ # 头文件 (Python.h) └── share/ # 共享数据 ``` #### 二、核心作用 1. **环境适配**: - 检测系统是否满足编译要求(如:gcc版本需≥4.8.2,binutils版本要求等[^1]) - 验证关键依赖(如:SSL模块缺失会导致HTTPS请求失败[^2]) 2. **安装隔离**: - 避免覆盖系统自带Python(如 `/usr/bin/python3`) - 创建自包含的Python环境(所有文件集中在 `/opt/python3.7`) 3. **定制化配置**: - 结合其他参数启用/禁用功能(如 `--with-ssl` 启用HTTPS支持) #### 三、典型使用场景 1. **多版本共存**: ```bash # 安装Python3.7但不影响系统Python3.6 ./configure --prefix=/opt/python3.7 make && sudo make install ``` 2. **无root权限安装**: ```bash # 普通用户安装到HOME目录 ./configure --prefix=$HOME/python37 ``` 3. **容器环境构建**: ```dockerfile RUN tar xzf Python-3.7.0.tar.xz && \ cd Python-3.7.0 && \ ./configure --prefix=/opt/python37 && \ make -j$(nproc) && \ make install ``` #### 四、工作流程 ```mermaid sequenceDiagram participant 用户 participant configure脚本 participant 系统环境 用户->>configure脚本: 执行 ./configure --prefix=... configure脚本->>系统环境: 检测gcc版本 系统环境-->>configure脚本: gcc 9.3.0 ✔ configure脚本->>系统环境: 检查openssl 系统环境-->>configure脚本: openssl 1.1.1 ✔ configure脚本->>用户: 生成Makefile 用户->>用户: make && make install ``` #### 五、注意事项 1. **路径权限**: - `/opt` 目录通常需要 `sudo` 权限 - 替代方案:`--prefix=$HOME/apps/python37` 2. **环境变量配置**: 安装后需添加PATH: ```bash export PATH="/opt/python3.7/bin:$PATH" source ~/.bashrc # 立即生效 ``` 3. **依赖缺失处理**: - 常见错误:`SSL module not available` - 解决方案: ```bash sudo apt install libssl-dev # Debian/Ubuntu sudo yum install openssl-devel # CentOS/RHEL ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值