百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 热门文章 > 正文

鸿蒙南向编译出错自查手册(建议收藏)

bigegpt 2025-02-11 11:00 6 浏览

作者:物联风景

在长期的 OpenHarmony教学过程中,发现经常会有学员被一些低级的,重复出现的错误所困扰。

有些是因为粗心,有些是对原理和机制理解不到位,而一遍一遍的讲解此种错误,不仅耗费巨量的时间,而且长此以往会消磨执教人员的耐性,变得易怒。

本篇就用来记录个种常见的错误,以供学员和各位初学者用来自查之用。

以下每种错误都非常典型,每个错误都配有截图和文字说明,一般对照来看可解决 90% 以上的新手入门问题,并会在后续的教学活动中持续改进,建议收藏。

①之前是好的,有一次输入 hb set 提示找不到 hb 工具

原因分析:没有在源码目录内执行,简单判断是否源码目录就看目录里面有没有一个 ohos_config.json 文件。

解决办法:cd 到源码所在目录内再执行 hb set。

知识点:执行 linux 指令的时候需要注意当前工作目录。

②提示:

Unable to load xxx

原因分析:在 BUILD.gn 内没有对应的目录,导致到不到该路径下的 BUILD.gn 文件。

解决办法:修改 BUILD.gn 内的目录名称或检查对应的名称有没有写错,如大小写,空格等问题,特别是有些学员会粗心大意,目录名称前有空格或者大写的 L 与 I 没有区分。

此时重命名就会发现:

知识点:BUILD.gn 内 deps 的写法,冒号前是文件夹名称。

③提示:

unresolved xxx dependencies … need by xxx

原因分析:在 BUILD.gn 同级的文件夹内的 BUILD.gn 声明的 static_library 名称与 deps 里面的不一致。

解决办法:修改 deps 内的冒号后面的库名称或者将文件夹内 BUILD.gn 声明的 static_library 改成与 deps 内一致。

知识点:deps 内冒号后面的内容是对应文件夹内的库名称。

补充知识:对于 deps 内的内容是出错的高危区,出现这种错误一般是对 deps 机制不理解导致,现用一图来说明 deps 到底改怎么写。

④提示:

ERROR at xxx/BUILD.gn:25:12: Assignment had no effect.
[OHOS INFO] source = [

原因分析:source 单词拼写错误,正确写法是 sources,同样的其他类似问题如下,也是单词拼写错误。

解决办法:将对应报错的单词改成正确的名称。

知识点:正确的名称为 sources 和 include_dirs,如下图:

推荐安装 gn 插件,有颜色提示,还可以方便进行快捷键注释,括号补全等操作。

在安装之前:


安装之后:

如果某一变量不是内置变量,则不能正确高亮:

⑤提示:?

ninja error: … needed by xxx.o, missing and unkonow rule to make it

原因分析:在 static_library 内的 sources 列表中将 .c 文件名写错了导致编译时候找不到对应的源文件。

解决办法:修改 sources 内的 c 文件名或者修改文件系统内的文件名使之与 sources 里的文件一致。

知识点:c 语言编译时依靠文件名寻找文件,对应的文件不存在则报错。

⑥提示某个符号未定义:undefined reference to xxx

原因分析:函数/变量名写错或调用一个根本不存在的函数/变量。

解决方式:将函数/变量名修改正确即可。

知识点:c 语言编译的相关知识。

⑦提示 too few arguments to function xxx

原因分析:c 语言函数参数个数传错。

解决方式:正确传入参数。

知识点:c 语言基础知识。

⑧提示 Expected comma between items.

原因分析:在 gn 中列表的两行数据没有用逗号隔开,如下:

解决方式:输入一个英文的逗号即可,建议:每一个列表项后面跟上一个逗号。

知识点:gn 的基础知识。

⑨提示 Replacing nonempty list.?

原因分析:尝试覆盖一个非空的列表,如下例:


解决方式:在下一个变量处使用+=即可解决,+=代表在后面追加。

知识点:gn 的基础知识。

⑩提示:?

fatal error: xxxx.h: No such file or directory

原因分析:在某个 c 文件里引用了某个头文件,但是没有在 include_dirs 里包含这个头文件的路径。

解决方式:在 include_dirs 内添加这个头文件即可,写在内部或使用+=在后面追加都行。

知识点:c 语言编译相关知识点。

相关推荐

php-fpm的配置和优化

目录概述php-fpm配置php-fpm进程优化配置慢日志查询配置php7进阶到架构师相关阅读概述这是关于php进阶到架构之php7核心技术与实战学习的系列课程:php-fpm的配置和优化学习目标:理...

成功安装 Magento2.4.3最新版教程「技术干货」

外贸独立站设计公司xingbell.com经过多次的反复实验,最新版的magento2.4.3在oneinstack的环境下的详细安装教程如下:一.vps系统:LinuxCentOS7.7.19...

十分钟让你学会LNMP架构负载均衡

业务架构、应用架构、数据架构和技术架构一、几个基本概念1、pv值pv值(pageviews):页面的浏览量概念:一个网站的所有页面,在一天内,被浏览的总次数。(大型网站通常是上千万的级别)2、u...

php从远程URL获取(mp4 mp3)音视频的流媒体数据

/***从远程URL中获取媒体(如mp4mp3)的内容*@parammixed$file_url*@parammixed$media_type...

Zabbix5.0安装部署

全盘展示运行状态,减轻运维人员的重复性工作量,提高系统排错速度,加速运维知识学习积累。1.png1、环境安装关闭SELinux并重启系统2.png安装httpd、mariadb、php运行yum-...

php 常见配置详解

以下是PHP常见的配置项及其含义:error_reporting:设置错误报告级别,可以控制PHP显示哪些错误。例如,设置为E_ALL将显示所有错误,而设置为0将禁止显示任何错误。displa...

实践分享|基于基石智算 DeepSeek API + WordPress 插件自动生成访客回复

基石智算举办的DeepSeek案例大赛汇集了不少基于CoresHubDeepSeekAPI服务或模型部署服务的精彩实践。本次我们将分享个人实践:通过DeepSeekAPI+Word...

如何在Eclipse中搭建Zabbix源码的调试和开发环境

Zabbix是一款非常优秀的企业级软件,被设计用于对数万台服务器、虚拟机和网络设备的数百万个监控项进行实时监控。Zabbix是开放源码和免费的,这就意味着当出现bug时,我们可以很方便地通过调试源码来...

MySQL自我保护参数

#头条创作挑战赛#之前(MySQL自我保护工具--pt-kill)提到用pt-kill工具来kill相关的会话,来达到保护数据库的目的,本文再通过修改数据库参数的方式达到阻断长时间运行的SQL的目...

Python闭包深度解析:掌握数据封装的高级技巧

闭包作为Python高级编程特性之一,为开发者提供了一种优雅的方式来实现数据封装和状态保持。这一概念源于函数式编程理论,在现代Python开发中发挥着重要作用。理解和掌握闭包的使用不仅能够提升代码的表...

Java服务网格故障注入与熔断实战

在分布式系统的高可用性挑战中,服务网格的故障注入与熔断机制是检验系统韧性的终极试金石。以下是10道逐步升级的"地狱关卡",每个关卡都对应真实生产环境中可能遇到的致命场景,并附具体场景示...

MySQL数据库性能优化全攻略:程序员必知的七大核心策略

作为程序员,我们每天都要与数据库打交道。当系统用户量突破百万级时,数据库往往成为性能瓶颈的首要怀疑对象。本文将深入探讨MySQL优化的七大核心策略,并提供可直接落地的优化方案,助您构建高效稳定的数据库...

如何在 Windows 11 上使用单个命令安装 XAMPP

XAMPP是一种广泛使用的软件,用于在Windows操作系统上快速运行LAMP服务器包,包括Windows11。尽管LAMP通常用于Linux系统,但XAMPP并不使用Li...

uTorrent怎样将bt种子转换为磁力

如何用uTorrent把BT种子转为磁力链接?以下方法希望能帮到你。1、在uTorrent窗口里,点击工具栏的按钮,所示。2、在打开窗口里,选取要转为磁力的种子文件,然后点击打开按钮,参照图示操作...

支持向量机SVM 分类和回归的实例

支持向量机(SupportVectorMachine)是Cortes和Vapnik于1995年首先提出的,它在解决小样本、非线性及高维模式识别中表现出许多特有的优势,并能够推广应用到函数拟合等其他...