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



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

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


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


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

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


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


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


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


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


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


编译工具:automake



你可能感兴趣的:(音视频流媒体)