交叉编译 Invalid configuration `xxxx': machine `xxxx' not recognized configure: error

本文详细介绍如何通过wget命令从GNU官方仓库下载最新版的config.guess和config.sub配置文件,用于更新交叉编译工程中过时的配置,确保编译过程顺利进行。适用于如libupnp等项目的交叉编译环境配置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >



1.0 下载最新的配置文件
wget -O config.guess 'http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD'
wget -O config.sub 'http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD'

(此条摘抄于 原文:https://blog.youkuaiyun.com/lile777/article/details/81389098 )
2.0 替换你要交叉编译的工程路径下面的 config.guess 和 config.sub 有的时候不在根目录 使用find命令搜索即可找出  然后进行替换即可。  比如你要交叉编译libupnp 那么就在你下载的upnp的文件夹下面查找。
 

### 解决 `Invalid configuration 'aarch64-linux-gnu': machine 'aarch64' not recognized` 错误 在交叉编译 SQLite 3.22.0 时,如果遇到 `Invalid configuration 'aarch64-linux-gnu': machine 'aarch64' not recognized` 错误,通常是因为配置脚本未能正确识别目标架构。以下是解决问题的详细方法。 #### 问题分析 错误的核心在于 `./configure` 脚本无法识别 `aarch64-linux-gnu` 配置[^1]。这可能是由于以下原因之一: - 配置脚本未更新以支持 `aarch64` 架构。 - 缺少必要的工具链或环境变量设置。 #### 解决方案 ##### 方法一:更新配置脚本 SQLite 的 `./configure` 脚本依赖于 `config.sub` 和 `config.guess` 文件来识别目标架构。如果这些文件过时,则可能导致无法识别 `aarch64-linux-gnu`。 解决方法是下载最新版本的 `config.sub` 和 `config.guess` 文件,并替换到 SQLite 源码目录中: ```bash wget https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD -O config.sub wget https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD -O config.guess ``` 完成替换后,重新运行 `./configure` 命令。 ##### 方法二:手动指定工具链路径 确保交叉编译工具链已正确安装,并通过环境变量显式指定工具链路径。例如: ```bash export CC=aarch64-linux-gnu-gcc export CXX=aarch64-linux-gnu-g++ export AR=aarch64-linux-gnu-ar export RANLIB=aarch64-linux-gnu-ranlib export STRIP=aarch64-linux-gnu-strip ``` 随后运行以下命令进行配置: ```bash ./configure --host=aarch64-linux-gnu --prefix=/path/to/install \ --disable-tcl --enable-shared --enable-threadsafe ``` ##### 方法三:检查工具链是否完整 如果工具链不完整或路径配置错误,也可能导致上述错误。验证工具链是否可用: ```bash aarch64-linux-gnu-gcc --version ``` 如果工具链不可用,请重新安装或配置正确的交叉编译工具链。 #### 示例代码 以下是完整的交叉编译流程示例: ```bash # 下载并解压 SQLite 源码 wget https://www.sqlite.org/2018/sqlite-autoconf-3220000.tar.gz tar xvf sqlite-autoconf-3220000.tar.gz cd sqlite-autoconf-3220000 # 更新 config.sub 和 config.guess wget https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD -O config.sub wget https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD -O config.guess # 设置交叉编译工具链 export CC=aarch64-linux-gnu-gcc export CXX=aarch64-linux-gnu-g++ export AR=aarch64-linux-gnu-ar export RANLIB=aarch64-linux-gnu-ranlib export STRIP=aarch64-linux-gnu-strip # 配置交叉编译环境 ./configure --host=aarch64-linux-gnu --prefix=/path/to/install \ --disable-tcl --enable-shared --enable-threadsafe # 编译与安装 make make install ``` #### 注意事项 - 确保工具链路径正确且环境变量已正确设置。 - 如果仍无法识别目标架构,可以尝试使用 `--build` 参数明确指定构建系统类型[^2]。 - 在嵌入式系统中,建议启用线程安全模式(`--enable-threadsafe`)以避免多线程环境下的潜在问题。 ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值