laocheng

laocheng

0个粉丝

14

问答

0

专栏

0

资料

laocheng  发布于  2017-02-13 14:50:45
采纳率 0%
14个问答
4150

系统地编译Hi3519过程及其处理问题思路

     
本帖最后由 laocheng 于 2017-2-13 14:56 编辑



开发Hi3519,非常需要查看论坛:易白纳 [url=http://www.ebaina.com/bbs/?fromuser=laocheng]http://www.ebaina.com/bbs/?fromuser=laocheng[/url]

网友在编译过程中遇见或解决的问题
[url=http://blog.csdn.net/mengxihe29/article/details/52439098]http://blog.csdn.net/mengxihe29/article/details/52439098[/url]

sdk.cleanup和sdk.unpack都是使用bash,而ubanntu默认使用sh,所以出现下面错误
[url=http://www.ebaina.com/bbs/forum.php?mod=viewthread&tid=10994]http://www.ebaina.com/bbs/forum.php?mod=viewthread&tid=10994[/url]
首先是查看:ls -l /bin/sh   //当前bash/dash设置
[code]xiao@ubuntu:~$ ls -l /bin/sh
lrwxrwxrwx 1 root root 4 Jan  2 17:15 /bin/sh -> bash[/code]
或者直接在编译make时指定SHELL=/bin/bash也可以
这样就可以执行脚本,展开SDK


交叉编译工具链已经安装好,却提示:
arm-linux-gcc: Command not found

[url=http://blog.csdn.net/tigerjibo/article/details/]http://blog.csdn.net/tigerjibo/article/details/[/url]
总结:在编译osdrv过程中,需要使用sudo权限,而sudo + xx(需要执行的命令)是需要利用sudo(输入密码)创建一个新的shell(没有继承环境变量),所以找不到对应的命令(也就是/etc/profile失效了)。
上面的执行测试发现,并没有真正解决问题:实际上是环境变量的问题,所以,查看下面知识点;


linux的环境变量:
[url=http://www.cnblogs.com/growup/archive/2011/07/02/2096142.html]http://www.cnblogs.com/growup/archive/2011/07/02/2096142.html[/url]
上面并没有真正解决问题,而是仅仅讲述了环境变量的基本知识。(可以直接跳过这部分的链接和解析)
要在 Bourne、Korn 或 BASH shell中设置此变量,
以便它应用于所有用户,请将该命令添加到文件 /etc/profile。
要仅对特定用户设置此变量,请将该命令添加到该用户的主目录中的文件 .profile


经过思考,其实可以继承环境变量
对sudo命令的思考,通过su去继承环境变量,也就是使用su - root 命令去继承普通用户下的环境变量(已经设在/etc/profile文件中的路径)
[url]http://renlifeng.blog.51cto.com/2076113/[/url] (讲解su命令的几种报错)
[url=http://www.ebaina.com/bbs/forum.php?mod=viewthread&tid=13857]http://www.ebaina.com/bbs/forum.php?mod=viewthread&tid=13857[/url] (结合hi3519解析,解答看laocheng)


好不容易弄好了环境变量问题:你会发现依然错误百出,因为存在各种依赖问题,所以:
通过查看SDK包内每一个PC工具的源码,然后去获知到底这个源码会生成什么工具。
其实也可以直接参考SDK里面的osdrv/readme_cn.txt,里面有提供工具树,你就知道什么回事了。
可以使用到的技巧:
[code]root@H265:osdrv# apt-cache search mkimage
jigit - tools for working with jigdo files
u-boot-tools - companion tools for Das U-Boot bootloader[/code]
这样继续:
[code]root@H265:osdrv# apt-get install u-boot-tools[/code]
如此类推,少那个,补那个。


再次clean还是无法编译出jffs2_tool
[url=http://www.ebaina.com/bbs/forum.php?mod=viewthread&tid=12147]http://www.ebaina.com/bbs/forum.php?mod=viewthread&tid=12147[/url](解答看laocheng)
解决的思路:

        1. 首先是查看编译错误提示(参考上面链接),获知jffs2_tool编译失败
        2. 先将osdrv/Makefile中的jffs2_tool部分注释(不再编译sdk提供的源码包)
        3. 然后自己从源上下载mkfs.jffs2(apt-get install mtd-utils)
        4. 并且将执行文件(mkfs.jffs2)放到pub/pc目录下
        5. 然后再重新在osdrv/下编译(注意clean掉之前发生错误部分,不需要全部clean,选择hipctools_clean)

注意:上面的思路,必须要亲自查看osdrv/Makefile内容,观察每一步到底操作了什么,才能明白,为何这样做是可行的。

从3519提供的两种交叉编译链(针对3519 SDK来说,是500、600的区别)
思考,为何需要提供:uclibc、glibc呢?
[url=https://code.google.com/archive/p/openwrt-for-embedded/issues/6]https://code.google.com/archive/p/openwrt-for-embedded/issues/6[/url]
思考:通过理解他们的区别,这是选择他们的依据。


我来回答
回答4个
时间排序
认可量排序

wow444

0个粉丝

1

问答

0

专栏

0

资料

wow444 2017-02-18 21:28:46
认可0
遇到问题,收藏记录专用!

jun7451321

0个粉丝

2

问答

0

专栏

0

资料

jun7451321 2017-02-20 15:06:27
认可0
:victory::victory::victory::victory:好东西,收藏~

helloreadme

0个粉丝

0

问答

0

专栏

0

资料

helloreadme 2018-03-09 11:20:50
认可0
再次clean还是无法编译出jffs2_tool
http://www.ebaina.com/bbs/forum.php?mod=viewthread&tid=12147(解答看laocheng)
解决的思路:

        1. 首先是查看编译错误提示(参考上面链接),获知jffs2_tool编译失败
        2. 先将osdrv/Makefile中的jffs2_tool部分注释(不再编译sdk提供的源码包)
        3. 然后自己从源上下载mkfs.jffs2(apt-get install mtd-utils)
        4. 并且将执行文件(mkfs.jffs2)放到pub/pc目录下
        5. 然后再重新在osdrv/下编译(注意clean掉之前发生错误部分,不需要全部clean,选择hipctools_clean)

第二步这一步详细步骤:hitools:
        @echo "---------task [3] build tools run on pc"
        make -C $(OSDRV_DIR)/tools/pc/mkyaffs2image/
        cp $(OSDRV_DIR)/tools/pc/mkyaffs2image/bin/$(YAFFS_TOOL) $(OSDRV_DIR)/pub/tools
        ##make -C $(OSDRV_DIR)/tools/pc/jffs2_tool/  ##注释内容
        cp $(OSDRV_DIR)/tools/pc/jffs2_tool/mkfs.jffs2 $(OSDRV_DIR)/pub/tools

第四步这一步详细步骤:cd /usr/sbin

helloreadme

0个粉丝

0

问答

0

专栏

0

资料

helloreadme 2018-03-09 11:24:51
认可0
接上一楼
ls
找到 mkfs.jffs2
cp mkfs.jffs2 /home/Hi3518E_SDK_V5.0.5.0/osdrv/tools/pc/jffs2_tool

这就完成了

使用平台为ubuntu16.04  3518ev200  送给那些和我一样看到楼主给出答案不知道怎么改的兄dei
或将文件直接拖到这里
悬赏:
E币
网盘
* 网盘链接:
* 提取码:
悬赏:
E币

Markdown 语法

  • 加粗**内容**
  • 斜体*内容*
  • 删除线~~内容~~
  • 引用> 引用内容
  • 代码`代码`
  • 代码块```编程语言↵代码```
  • 链接[链接标题](url)
  • 无序列表- 内容
  • 有序列表1. 内容
  • 缩进内容
  • 图片![alt](url)
+ 添加网盘链接/附件

Markdown 语法

  • 加粗**内容**
  • 斜体*内容*
  • 删除线~~内容~~
  • 引用> 引用内容
  • 代码`代码`
  • 代码块```编程语言↵代码```
  • 链接[链接标题](url)
  • 无序列表- 内容
  • 有序列表1. 内容
  • 缩进内容
  • 图片![alt](url)
举报反馈

举报类型

  • 内容涉黄/赌/毒
  • 内容侵权/抄袭
  • 政治相关
  • 涉嫌广告
  • 侮辱谩骂
  • 其他

详细说明

易百纳技术社区