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



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

网友在编译过程中遇见或解决的问题


sdk.cleanup和sdk.unpack都是使用bash,而ubantu默认使用sh,所以出现下面错误
首先是查看: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

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


linux的环境变量:
上面并没有真正解决问题,而是仅仅讲述了环境变量的基本知识。(可以直接跳过这部分的链接和解析)
要在 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
解决的思路:
  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呢?
思考:通过理解他们的区别,这是选择他们的依据。


编译工具:automake



  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值