Ubuntu16.04下搭建海思的arm-hisiv300-linux-gcc交叉编译环境

Ubuntu16.04下搭建海思的arm-hisiv300-linux-gcc交叉编译环境的问题与解决办法
本来以为按官方给的几个简单的安装步骤操作就可以了,但后来发现无论哪个厂家的交叉编译工具想在64位的平台上安装搭建,例安装如
arm-none-linux-gnueabi-gcc ,arm-xilinx-gnueabi-gcc等都少不了要安装一些32位平台上的依赖包,不然是没法在64的平台上运行的,大都会报出:gcc-arm-linux-gnueabi command not found这样的错,让人无奈。这次再次安装交叉编译工具时又遇到这个梗了,这次是安装海思的arm-hisiv300-linux-gcc交叉编译环境,所以决定要好好总结一下,安装是遇到的问题。

厂家给出的安装步骤是这样的:
步骤 1,工具链及其安装程序位于 osdrv/opensource/toolchain/arm-hisiXXX-linux/目
录下,进入此目录进行解压,命令如下:
cd toolchain/arm-hisiXXX-linux/
tar -xvf arm-hisiXXX-linux.tar.bz2
步骤 2, 安装工具链。运行命令 sudo ./cross.install 即可完成此工具链的安装。
----结束
这是一个封装好了的源码包的安装步骤,但我敢肯定的是安装包里决定没有一些在64位平台机上需要安装的一些32位的依赖包,所以我按照步骤安装之后。在检测安装是否成功的时候运行
arm-hisiv300-linux-uclibcgnueabi-gcc -v
都会报出:bash: command not found
或者
error while loading shared libraries: libz.so.1: cannot open shared object file: No such file or directory
这对于初学者来说无疑是个坎,连开发环境都还没能搭建好,怎么继续学习开发。

所以这里给出了在安装海思的交叉编译开发环境前需要安装的一些32位的依赖包,其他厂家的交叉编译环境安装前也一样需要安装类似的32位依赖包,具体哪些包自己官网上找一下或者百度经验贴看一下。
以下是在安装海思的arm-hisiv300-linux-gcc交叉编译环境时所需要的包:
sudo apt-get install libc6 libc6-dev
sudo apt-get install libc6-dev-i386
sudo apt-get install libx32gcc-4.8-dev
sudo apt-get install libc6-dev-i386
sudo apt-get install lib32stdc++6
sudo apt-get install gcc-multilib
sudo apt-get install lib32ncurses5
sudo apt-get install lib32z1

  • 7
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
本资源为arm-linux下的编译链工具V300 C语言有三种标准库如下: 1.Glibc glibc = GNU C Library 是GNU项(GNU Project)目,所实现的 C语言标准库(C standard library)。 目前,常见的桌面和服务器中的GNU/Linux类的系统中,都是用的这套C语言标准库。 其实现了常见的C库的函数,支持很多种系统平台,功能很全,但是也相对比较臃肿和庞大。 2.uClibc 一个小型的C语言标准库,主要用于嵌入式。 其最开始设计用于uClinux(注:uClinux不支持MMU),因此比较适用于微处理器中。 对应的,此处的u意是μ,Micro,微小的意。 uClibc的特点: (1)uClibc比glibc要小很多。 (2)uClibc是独立的,为了应用于嵌入式系统中,完全重新实现出来的。和glibc在源码结构和二进制上,都不兼容。 3.EGLIBC EGLIBC = Embedded GLIBC EGLIBC是,(后来)glibc的原创作组织FSF所(新)推出的,glibc的一种变体,目的在于将glibc用于嵌入式系统。 EGLIBC的目标是: (1)保持源码和二进制级别的兼容于Glibc 源代码架构和ABI层面兼容 如果真正实现了这个目标,那意味着,你之前用glibc编译的程序,可以直接用eglibc替换,而不需要重新编译。 这样就可以复用之前的很多的程序了。 (2)降低(内存)资源占用/消耗 (3)使更多的模块为可配置的(以实现按需裁剪不需要的模块) (4)提高对于交叉编译(cross-compilation)和交叉测试(cross-testing)的支持 【目前了解到的交叉编译工具链的应用环境arm-hisiv100-linux为基于uclibc的工具链,arm-hisiv200-linux 为基于 glibc 的工具链; arm-hisiv300-linux为基于uclibc的工具链,arm-hisiv400-linux 为基于 glibc 的工具链; arm-hisiv500-linux为基于uclibc的工具链,arm-hisiv600-linux 为基于 glibc 的工具链。 (在开发的时候,你编译内核所用的交叉编译链跟用户的应用程序所用的交叉编译链一定需要相同,不然没法调用系统内核的依赖库)   其中eglibc这种很容易被人开发者忽视,从而选错了编译工具链。 uClibc和Glibc并不相同,两者有许多不同之处,有可能给你带来一些问题。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值