【鸿蒙pc命令行适配】解决configure报错: Invalid configuration `aarch64-linux-ohos‘_ OS `ohos‘ not recognized
文章介绍了configure脚本在类Unix系统中的核心作用,并针对鸿蒙OS(ohos)环境下编译xz命令时出现的OS 'ohos' not recognized错误提供了两种解决方案:1) 更换host参数为aarch64-unknown-linux-musl;2) 更新config.sub和config.guess文件以支持鸿蒙OS。文章指出随着鸿蒙生态发展,主流工具链将逐步完善对鸿蒙的原生支
1. 什么是configure?
configure 工具,是类 Unix 系统下开源软件编译安装流程中核心的配置脚本,主要作用是检查系统环境、适配不同平台,并生成符合当前系统的编译配置。configure 本质上不是一个独立的“工具程序”,而是由 GNU Autotools(主要包括 autoconf、automake、libtool 等)生成的 Shell 脚本文件。它的核心目标是:
- 自动检测你的系统环境(比如是否安装了编译器、依赖库、系统架构、路径等);
- 根据检测结果生成适配当前系统的
Makefile(编译规则文件); - 让同一套源代码能在不同的类 Unix 系统(Linux、macOS、FreeBSD 等)上编译运行。
简单比喻:configure 就像装修前的“上门测量师”,先摸清你家(系统)的情况,再定制装修方案(Makefile),避免后续施工(编译)出问题。
2. configure报错表现:aarch64-linux-ohos': OS ohos’ not recognized
基于OHOS SDK环境,对某些C/C++应用进行交叉编译时需要指定--host=aarch64-linux-ohos参数,以便configure能正常识别我们的目标平台架构和编译器等信息。但是今天在编译xz命令时遇到了一个报错:
checking host system type... Invalid configuration `aarch64-linux-ohos': OS `ohos' not recognized

完整报错如上图所示,在执行configure过程中,调用了/bin/bash ./build-aux/config.sub aarch64-linux-ohos,但是脚本不识别ohos这个配置,导致configure失败。
3. 解决方案
这个报错,看起来是config.sub脚本不支持鸿蒙os导致,解决方法有2种,一种是换一个host参数,一种是让config.sub脚本能正常识别鸿蒙os。
3.1 更换host为aarch64-unknown-linux-musl
更换–host参数,重新执行configure命令:
./configure --host=aarch64-unknown-linux-musl
如下图所示,之前的错误已经没有了,问题顺利解决。

3.2 更新config.sub支持鸿蒙os
第二种方法,是将config.sub和config.guess更新到支持鸿蒙os的最新版本,命令如下:
# 下载最新 config.sub
wget -O build-aux/config.sub https://git.savannah.gnu.org/cgit/config.git/plain/config.sub
# 下载最新 config.guess
wget -O build-aux/config.guess https://git.savannah.gnu.org/cgit/config.git/plain/config.guess
# 赋予执行权限
chmod +x build-aux/config.sub build-aux/config.guess
如下图所示,问题也得到了解决。

4. 总结
鉴于鸿蒙操作系统(HarmonyOS)是一种与Windows、Linux及macOS等传统操作系统不同的新型平台,其软件架构和EABI(Embedded Application Binary Interface)等特性均采用了全新的设计。因此,在实际使用过程中可能会遇到一定的兼容性挑战。在当前阶段,解决这些问题可能需要投入额外的研究时间。然而,随着鸿蒙PC生态系统的不断发展和完善,预计主流的编译工具链将逐渐提供对该系统的原生支持,从而显著简化跨平台应用程序尤其是命令行程序的移植与编译过程。期待这一天的早日到来,欢迎加入开源鸿蒙PC社区:https://harmonypc.csdn.net/ 。
更多推荐


所有评论(0)