草庐IT

Openharmony南向编译出错自查手册

物联风景 2023-03-28 原文

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

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

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

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

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

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

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

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

2、提示Unable to load xxx


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

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

此时重命名就会发现:


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

3、提示unresolved xxx dependencies … need by xxx

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

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

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

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

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

[OHOS INFO] source = [

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

也是单词拼写错误。

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

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

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

在安装之前:

安装之后:

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

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


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

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

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

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

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

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

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

7、提示too few arguments to function xxx

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

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

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

8、提示 Expected comma between items.

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

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

知识点:gn的基础知识。

9、提示Replacing nonempty list.

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

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

知识点:gn的基础知识。

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

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

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

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

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

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

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

有关Openharmony南向编译出错自查手册的更多相关文章

  1. ruby-on-rails - 无法在centos上安装therubyracer(V8和GCC出错) - 2

    我正在尝试在我的centos服务器上安装therubyracer,但遇到了麻烦。$geminstalltherubyracerBuildingnativeextensions.Thiscouldtakeawhile...ERROR:Errorinstallingtherubyracer:ERROR:Failedtobuildgemnativeextension./usr/local/rvm/rubies/ruby-1.9.3-p125/bin/rubyextconf.rbcheckingformain()in-lpthread...yescheckingforv8.h...no***e

  2. ruby - Sinatra set cache_control to static files in public folder编译错误 - 2

    我不知道为什么,但是当我设置这个设置时它无法编译设置:static_cache_control,[:public,:max_age=>300]这是我得到的syntaxerror,unexpectedtASSOC,expecting']'(SyntaxError)set:static_cache_control,[:public,:max_age=>300]^我只想将“过期”header设置为css、javaascript和图像文件。谢谢。 最佳答案 我猜您使用的是Ruby1.8.7。Sinatra文档中显示的语法似乎是在Ruby1.

  3. ruby - 安装libv8(3.11.8.13)出错,Bundler无法继续 - 2

    运行bundleinstall后出现此错误:Gem::Package::FormatError:nometadatafoundin/Users/jeanosorio/.rvm/gems/ruby-1.9.3-p286/cache/libv8-3.11.8.13-x86_64-darwin-12.gemAnerroroccurredwhileinstallinglibv8(3.11.8.13),andBundlercannotcontinue.Makesurethat`geminstalllibv8-v'3.11.8.13'`succeedsbeforebundling.我试试gemin

  4. 安卓apk修改(Android反编译apk) - 2

    最近因为项目需要,需要将Android手机系统自带的某个系统软件反编译并更改里面某个资源,并重新打包,签名生成新的自定义的apk,下面我来介绍一下我的实现过程。APK修改,分为以下几步:反编译解包,修改,重打包,修改签名等步骤。安卓apk修改准备工作1.系统配置好JavaJDK环境变量2.需要root权限的手机(针对系统自带apk,其他软件免root)3.Auto-Sign签名工具4.apktool工具安卓apk修改开始反编译本文拿Android系统里面的Settings.apk做demo,具体如何将apk获取出来在此就不过多介绍了,直接进入主题:按键win+R输入cmd,打开命令窗口,并将路

  5. .net - 是否有 Ruby .NET 编译器? - 2

    是否有适用于Ruby语言的.NETFramework编译器?我听说过DLR(动态语言运行时),这是否将使Ruby能够用于.NET开发? 最佳答案 IronRuby是Microsoft支持的项目,建立在动态语言运行时之上。 关于.net-是否有Ruby.NET编译器?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/199638/

  6. python - 使用 Python、Ruby 和 Perl 重新编译 MacPort 版本的 MacVim - 2

    关闭。这个问题是off-topic.它目前不接受答案。想改进这个问题吗?Updatethequestion所以它是on-topic用于堆栈溢出。关闭10年前。ImprovethisquestionLinux专家正在转向Mac(10.8)。因为我懒...我使用MacPorts安装MacVim。它似乎安装没有错误。我只需要mvim中的python、ruby和perl支持。$/opt/local/bin/mvim--version|egrep'patches|python|ruby|perl'Includedpatches:1-244,246-646+multi_lang-mzscheme+

  7. ruby - 为什么 `middleman serve` 有效,但是 `middleman build` 编译这个 Sass 失败? - 2

    当我刚刚运行middleman时服务,all.css编译得很好,只包含对+box-shadow(none)的调用:/*line1,/home/yang/asdf/source/stylesheets/content.css.sass*/div{-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;}但是当我构建网站时,我得到了这个Sass/Compass错误:$middlemanbuildSlim::EmbeddedEngineisdeprecated,itiscalledSlim::EmbeddedinSlim2.0

  8. ruby - 有没有办法在 Ruby 中执行编译时类型检查? - 2

    我知道Ruby是动态和强类型的,但据我所知,由于每个参数缺少显式类型表示法(或契约),当前语法不允许在编译时检查参数类型。如果我想执行编译时类型检查,我有哪些(实际成熟的)选项?更新我的意思是类型检查类似于典型的静态类型语言。比如C。例如,C函数表示每个参数的类型,编译器检查传入的参数是否正确。voidfunc1(structAAAaaa){structBBBbbb;func1(bbb);//Wrongtype.Compiletimeerror.}作为另一个例子,Objective-C通过放置显式类型信息来做到这一点。-(id)method1:(AAA*)aaa{BBB*bbb=[[A

  9. ruby - Ruby 将来可以编译并更快吗? - 2

    关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭7年前。ImprovethisquestionC、Java、C#和Python都是从头编译的。感谢Facebook,PHP现在也可以编译并可以在HHVM上运行,从而提高程序的性能。Ruby不可编译并且比上述语言慢。Ruby有没有可能在未来被编译(就像PHP和HHVM一样)?或者可能有一些原因不能做到?

  10. ruby - 有没有办法让文件夹包含在生产构建中但不让 jekyll 编译它? - 2

    我认为最好的例子是images/文件夹或node_modules/用于将图像和依赖项包含在最终构建中,而无需花费很长时间编译。编辑:抱歉没有具体说明,但我很清楚keep_files和exclude两者都对我的情况没有帮助。exclude从编译和站点构建中排除文件夹和文件,并且每次都需要额外的流水线工具来手动移动它们。keep_files要求文件首先存在于最终构建中,这对于某些生产环境(GitHub的gh-pages等)是不可能的 最佳答案 你可能想看看这个:ExcludingadirectoryfromJekyllwatchP.S.

随机推荐