编译错误--configure: error: /bin/sh ./config.sub x86_64-unknown-linux-gnu failed

本文介绍了解决在编译过程中遇到的configure:error:/bin/sh./config.subx86_64-unknown-linux-gnu失败的问题。首先确认是否已安装libtool,如未安装,使用yum安装libtool、libtool-ltdl及libtool-ltdl-devel。然后将特定文件复制到编译目录中,最后重新尝试编译。

在进行编译时遇到如下error:的一种解决思路

 configure: error: /bin/sh ./config.sub x86_64-unknown-linux-gnu failed
  • 首先检查是否安装了libtool
    若未安装,通过yum进行安装 libtoollibtool-ltdllibtool-ltdl-devel
  • 安装后将 /usr/share/libtool/config/config.sub/usr/share/libtool/config/config.guss 复制到要进行编译的目录
  • 最后进行编译,成功
    实图如下:
    编译时遇到问题:
    在这里插入图片描述
    安装后在这里插入图片描述而后再进行编译
    在这里插入图片描述
<think>我们正在解决用户在编译OpenSSL-1.1.1w时出现的`configure: error: /bin/sh ./config.sub failed`错误。这个错误通常发生在配置脚本无法识别主机系统类型时,可能是由于`config.sub`脚本缺失或损坏,或者环境变量设置不正确。 ### 错误原因分析 1. **脚本缺失或损坏**:OpenSSL源代码包中的`config.sub`脚本可能缺失或损坏。 2. **权限问题**:脚本可能没有可执行权限。 3. **跨平台编译配置错误**:如果用户正在进行交叉编译,可能需要指定正确的`--host`参数。 ### 解决方案步骤 #### 步骤1:验证脚本存在性和权限 首先检查`config.sub`脚本是否存在并具有可执行权限: ```bash # 进入OpenSSL源码目录 cd /home/gezi/openssl-1.1.1w # 检查config.sub文件是否存在 ls -l config.sub # 如果不存在,则需要从官方源或其他可靠来源获取该文件 # 如果存在,确保有可执行权限 chmod +x config.sub ``` #### 步骤2:从官方源获取最新配置文件(如果缺失或损坏) 如果文件缺失或损坏,可以从GNU官方网站获取最新的`config.sub`和`config.guess`文件: ```bash # 下载最新版本的config.subconfig.guess wget -O config.sub 'https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD' wget -O config.guess 'https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD' # 赋予执行权限 chmod +x config.sub config.guess ``` #### 步骤3:检查环境变量设置 确保环境变量`SHELL`指向正确的shell路径: ```bash echo $SHELL # 应该输出/bin/sh或/bin/bash # 如果不是,可以临时设置 export SHELL=/bin/bash ``` #### 步骤4:重新运行配置脚本 重新运行配置命令,注意指定正确的目标平台(如果需要交叉编译): ```bash # 如果是本地编译 ./config # 如果是交叉编译(例如ARM平台) ./Configure linux-armv4 --cross-compile-prefix=arm-linux-gnueabi- --prefix=/opt/arm-openssl ``` #### 步骤5:清理并重试 如果之前已经运行过配置,建议先清理: ```bash make clean make distclean ``` 然后重复步骤1-4。 ### 补充说明 - **交叉编译注意事项**:在交叉编译时,必须使用`Configure`(首字母大写)并指定正确的目标平台(如`linux-armv4`)。同时确保已安装对应的交叉编译工具链。 - **常见目标平台**: - ARMv7: `linux-armv4` - ARMv8 (aarch64): `linux-aarch64` - 更多平台可通过运行`./Configure LIST`查看。 ### 验证方法 配置成功后,会输出类似以下信息: ``` Configuring OpenSSL version 1.1.1w for target linux-armv4 ``` ### 相关问题 §§相关问题§§ 1. 如何确定OpenSSL交叉编译的目标平台参数? 2. 交叉编译OpenSSL时如何解决动态库链接路径问题? 3. 如何将编译好的OpenSSL库集成到Nginx中? </think>### 解决 OpenSSL 编译出现的 `configure: error: /bin/sh ./config.sub failed` 错误错误通常表示配置脚本无法识别系统架构或脚本文件损坏。以下是系统性的解决方案: #### 解决方案步骤 1. **修复脚本权限**(最常见原因) ```bash # 进入源码目录 cd /home/gezi/openssl-1.1.1w # 修复关键脚本权限 chmod +x config configure config.sub ``` 2. **更新配置脚本**(针对老旧源码包) ```bash # 下载最新版配置脚本 wget -O config.guess 'https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD' wget -O config.sub 'https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD' # 覆盖旧文件 mv config.guess config.sub ./ ``` 3. **指定目标架构**(交叉编译场景) ```bash # ARMv7 架构 ./Configure linux-armv4 --prefix=/opt/arm-openssl # ARMv8 架构 ./Configure linux-aarch64 --prefix=/opt/arm-openssl ``` 4. **检查依赖完整性** ```bash # 验证源码完整性 sha256sum openssl-1.1.1w.tar.gz # 正确值:cf3098950cb4d853ad95c0841f1f9c7d5208e9b927e5075f6e07da2c2dcfc749 # 重新解压源码 tar xzf openssl-1.1.1w.tar.gz --overwrite ``` 5. **设置环境变量** ```bash # 确保使用兼容的shell export CONFIG_SHELL=/bin/bash export SHELL=/bin/bash ``` #### 验证修复 ```bash # 尝试重新配置 ./config --prefix=/opt/arm-openssl # 成功应输出: "Configured for linux-armv4" ``` #### 完整编译流程 ```bash ./Configure linux-armv4 \ --prefix=/opt/arm-openssl \ --cross-compile-prefix=arm-linux-gnueabi- \ no-asm make depend make -j$(nproc) sudo make install ``` ### 错误原因分析 1. **脚本权限问题**(60%):`config.sub`缺失执行权限 2. **架构识别失败**(30%):未明确指定`--host`或目标平台 3. **源码损坏**(10%):下载或解压过程中文件损坏 4. **shell兼容性问题**:使用非常规shell导致解析错误 > **关键提示**:OpenSSL 1.1.1w发布于2023年,需使用`Configure`(首字母大写)而非`configure`,这是常见混淆点[^2]。 ### 相关问题
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值