1. 什么是configure?

configure 工具,是类 Unix 系统下开源软件编译安装流程中核心的配置脚本,主要作用是检查系统环境、适配不同平台,并生成符合当前系统的编译配置。configure 本质上不是一个独立的“工具程序”,而是由 GNU Autotools(主要包括 autoconfautomakelibtool 等)生成的 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/

Logo

赋能鸿蒙PC开发者,共建全场景原生生态,共享一次开发多端部署创新价值。

更多推荐