Openharmony南向编译出错自查手册

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

想了解更多关于开源的内容,请访问:

​51CTO 开源基础软件社区​

​https://ost.51cto.com​

在长期的openharmony教学过程中,发现经常会有学员被一些低级的,重复出现的错误所困扰,有些是因为粗心,有些是对原理和机制理解不到位,而一遍一遍的讲解此种错误,不仅耗费巨量的时间,而且长此以往会消磨执教人员的耐性,变得易怒,本篇就用来记录个种常见的错误,以供学员和各位初学者用来自查之用。
以下每种错误都非常典型,每个错误都配有截图和文字说明,一般对照来看可解决90%以上的新手入门问题,并会在后续的教学活动中持续改进,建议收藏。

1、之前是好的.有一次输入hb set提示找不到hb工具

#创作者激励#openharmony南向编译出错自查手册-开源基础软件社区

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

#创作者激励#openharmony南向编译出错自查手册-开源基础软件社区

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

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

2、提示Unable to load xxx

#创作者激励#openharmony南向编译出错自查手册-开源基础软件社区


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

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

#创作者激励#openharmony南向编译出错自查手册-开源基础软件社区

此时重命名就会发现:

#创作者激励#openharmony南向编译出错自查手册-开源基础软件社区


#创作者激励#openharmony南向编译出错自查手册-开源基础软件社区

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

3、提示unresolved xxx dependencies … need by xxx

#创作者激励#openharmony南向编译出错自查手册-开源基础软件社区

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

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

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

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

#创作者激励#openharmony南向编译出错自查手册-开源基础软件社区

4、提示 ERROR at xxx/BUILD.gn:25:12: Assignment had no effect.

[OHOS INFO] source = [

#创作者激励#openharmony南向编译出错自查手册-开源基础软件社区

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

#创作者激励#openharmony南向编译出错自查手册-开源基础软件社区

也是单词拼写错误。

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

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

#创作者激励#openharmony南向编译出错自查手册-开源基础软件社区

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

#创作者激励#openharmony南向编译出错自查手册-开源基础软件社区

在安装之前:

#创作者激励#openharmony南向编译出错自查手册-开源基础软件社区

安装之后:

#创作者激励#openharmony南向编译出错自查手册-开源基础软件社区

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

#创作者激励#openharmony南向编译出错自查手册-开源基础软件社区

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

#创作者激励#openharmony南向编译出错自查手册-开源基础软件社区


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

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

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

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

#创作者激励#openharmony南向编译出错自查手册-开源基础软件社区

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

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

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

7、提示too few arguments to function xxx

#创作者激励#openharmony南向编译出错自查手册-开源基础软件社区

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

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

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

8、提示 Expected comma between items.

#创作者激励#openharmony南向编译出错自查手册-开源基础软件社区

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

#创作者激励#openharmony南向编译出错自查手册-开源基础软件社区

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

知识点:gn的基础知识。

9、提示Replacing nonempty list.

#创作者激励#openharmony南向编译出错自查手册-开源基础软件社区

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

#创作者激励#openharmony南向编译出错自查手册-开源基础软件社区

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

#创作者激励#openharmony南向编译出错自查手册-开源基础软件社区

知识点:gn的基础知识。

10、提示:fatal error: xxxx.h: No such file or directory

#创作者激励#openharmony南向编译出错自查手册-开源基础软件社区

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

#创作者激励#openharmony南向编译出错自查手册-开源基础软件社区

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

#创作者激励#openharmony南向编译出错自查手册-开源基础软件社区

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

想了解更多关于开源的内容,请访问:

​51CTO 开源基础软件社区​

​https://ost.51cto.com​

责任编辑:jianghua 来源: 51CTO 开源基础软件社区
相关推荐

2022-05-11 15:08:52

驱动开发系统移植

2023-04-03 15:51:47

2023-03-08 15:55:53

Linux驱动鸿蒙

2023-03-02 20:52:11

​ PWM脉冲宽度调制

2022-08-29 17:34:05

鸿蒙操作系统

2023-03-20 16:05:49

HDF传感器驱动开发

2022-05-12 14:42:17

项目开发Napi实现

2022-09-14 15:28:19

操作系统鸿蒙

2023-08-11 14:06:58

鸿蒙Windows

2022-01-11 15:41:18

鸿蒙HarmonyOS应用

2023-07-27 14:38:33

开源鸿蒙

2009-11-30 10:20:47

2010-01-05 18:03:57

2023-02-01 16:28:30

Linux内核鸿蒙

2022-05-07 16:13:59

DevEcoTool鸿蒙

2021-12-02 10:05:01

鸿蒙HarmonyOS应用

2022-05-27 15:04:53

鸿蒙操作系统

2023-02-09 15:28:19

鸿蒙编译速度

2021-07-02 14:16:04

鸿蒙HarmonyOS应用

2023-06-12 15:43:44

鸿蒙智能家居开发
点赞
收藏

51CTO技术栈公众号