今天终于hello了world,非常感谢群里的大佬!真的是第一次接触linux开发qwq。由于是小白,大佬看我的文章应该会觉得废话很多,但如果真的有大佬看了,希望可以指正我的一些错误!
看看你有没有和我差不多的经历
1.环境的选择:直接按照官方的意思就是,windows下虚拟机跑个linux,linux用来做搭环境和编译,windows来敲代码和烧录。所以在看教程前,先去给自己安装个虚拟机里的linux吧,我装的是ubuntu18
2.linux下)我没用过git指令:因为我之前只玩过gitkraken,git指令的使用并不是很会,我们在下载源码的时候需要用repo,repo是用来管理git的,简单说就是简化大量的git clone,方便摸鱼,一句指令能自动下载很多。但是小白直接复制教程的指令时是一定会报错的,前提是需要先下载一个git,然后需要有一个github账号,也可以是gitee等其他的开源网址,下载好git后,找到隐藏文件.ssh里面有id_rsa.pub,不一定直接点的开,我是用gedit id_rsa.pub,进去后复制里面全部内容。然后在gitee等网站里找到账号设置类似的页面,找到ssh公钥,把刚刚复制的东西丢进公钥里,直接确定就好了,这个时候相当于链接了你本地到你的gitee账户(我是这么理解的),接下来就允许你repo 了
3.虚拟机和windows之间要传文件,传复制内容等,还需要搞一个共享文件夹,这里就自行百度吧,我当时弄的时候也稍微有点问题,根据网上的教程,好像还需要多加一步,你要手动去那个文件夹的共享设置里点一下’’共享‘‘,这一步反正我看的教程并没有说明
4.我终于能repo了,但是发现1.0.1版本每次下载到(110/112)就卡住,换网,换日子都不行,我直接放弃了,采用了另一种方案,既然linux一切皆文件,我找到了一个分享了他的docker的UP主。于是我安装了docker,下载了他的容器,把里面的root文件整个CP了出来,里面包括了源码和需要用到的一些工具,当然主要用到的就是他的源码和通过源码编译过来的hb,这俩个偷过来,其他根据网上教程继续搞就行,路径方面,要注意一下他的源码里的gcc工具的路径,网上教程里也有提到,总之看着过一遍就行了。顺带一句,这个佬docker里的源码是1.1.2分支
5.关于gn和ninja,看我文末给出的网址,直接用这位大佬编译完的最快,按他的方法来,亲测可以使用。如果要自己编译得到gn的话,要么去gitee上找搬运,要么翻墙去官网下。
6.跑helloworld时,按照官方教程中有这样一段
但是我使用的源码中并没有这些,里面只有短短的一条这样的 如果你用了我的方法,不用把官方的这些代码放进去,放进去会报错。如果怕影响后续什么,可以加官方的那些代码,然后把以下文件的那句话注释掉,也是可以编译通过的。 我是建议加官方的代码段,然后注释掉那条,我猜测可能是别的地方也有包含了这个地方,导致出现重复编译什么的,加了总比没加好把,虽然我测试了2种方法,helloworld和LED都是能正常跑的,但是后面的大项目就不知道了。
7.当你复制官方文档里的代码到vscode中时,在左侧可能会出现这种东西,千万不能忽略,这是编码的问题。
这里要感谢小叶大佬点拨了我。如果你也遇到这种问题了,只需要把前面的空格删掉,删到代码跑到上面那一行然后再按回车回去,或者整行重打,方法很多。
8.通过前面的,我终于能成功编译了,我兴高采烈的下载了img,恩~看着没啥问题,等等?为什么不打印hello world?我懵了呀,我确定我是编译了hello_demo。后来再另一篇贴里,找到了关键点,就是linux开发还需要手动加一下一个东西,具体是这样
第三条,libapp_hello.a,具体命名规则就是,你写的那个‘’app_***‘’名字前加个lib,比如我还写了一个app_led,那这句话就要改成libapp_led.a
9.跑wlan_demo时出现在编译的最后阶段出现报错,一开始还以为是配置问题,仔细看了全部报错,发现有这样一句话Overlapped size: 4096 Byte(4kB),猜测是代码太大了,因为如果把OHOSSOURCE += $(ROOT_PATH)/lib/ohos/libapp_WlanTest.a这里注释掉就没问题,可见确实是最后一步整合二进制文件时出的问题。解决地址在下面提供。因为不编译控制台了,记得把这里注释掉哦,那篇文章中未提及,如下:
网址汇总:
偷编译完的源码
gn、ninja
固件烧录
官方手册
佬的教程
别人的坑总结
code字符问题解决方法
关于第7条避坑的原帖
第9条代码溢出解决方法