(05)编译app及固件

编译app及固件。
要求:
1.linux环境创建一个Project文件夹,修改对应配置文件使其可nfs访问,将代码文件(git_ipc)及对应库文件(ReleaseDPT4)放到该文件夹下。
1.1 首先在linux环境创建一个Project文件夹,如下

1.2 修改对应配置文件/etc/exports,如下

wq!保存退出
再用命令cat查看一下修改

1.3 重启nfs-kernel-server服务,如下

1.4 重新挂载一下文件目录,并将文件git_ipc和ReleaseDTP4放到目录/root/Desktop/hello/下,就可以在目录文件夹/root/Desktop/Project中看到了。

2.解压对应的rootfs内核文件,进入git_ipc/release/,进入backup将对应型号内核压缩包解压到backup同级目录
2.1 进入git_ipc/release/

2.2 进入backup将对应型号内核压缩包解压到backup同级目录,将release/rootfs_16a.tar.gz减压到backup同级目录,减压结果如同,在backup同级目录里得到出了减压后的新文件夹rootfs_16a

3.进入app_rebulid/include,找到version.h,修改原版本号为1.9.74,并加上后缀“test”
3.1进入app_rebulid/include,找到version.h,并打开version.h文件

修改版本号

wq!保存退出,修改结果如下

4.app_rebulid/configs,阅读对应的config文件,复制对应的config文件到app_rebulid的同级目录并改名为config.ini
修改结果如图

5.进入app_rebulid目录,分别执行make clean,make sdk,make,make image,建议每一步都重定向到一个log文件,打开查找是否有error,处理每一步出现的问题,并记录
5.1 进入进入app_rebulid目录,执行make clean,结果如图

这一步做得很顺利,就是简单的清除一下。
5.2 执行make sdk结果如图

结果报错说找不到对应的交叉编译工具arm-hisiv300-linux-gcc,这里让我也懵了半天明明输入arm-hisiv300-按Tab键补全是可以补全的呀!应该是成功安装了arm-hisiv300-linux-gcc才对,为什么就说找不到呢?想了半天最后决定先写一个hello.c文件进行测试一下是否成功的安装了arm-hisiv300-linux-gcc。首先先编写一下hello.c,然后输入编译命令:
arm-hisiv300-linux-gcc hello.c
运行结果如下图

结果还是报出没有找到编译工具,果然是交叉编译工具没有安装成功,为此我自己也折腾了半天才解决这问题,然后总结了相应的解决办法,相应解决办法附在篇尾。
按照相应的办法解决之后,终于可以成功编译了,这里编译一个hello.c作为检测,运行结果如下图

而且输入arm-hisiv300-linux-gcc -v也成功的报出了交叉编译工具相应的版本号了,这才是真正的成功安装了arm-hisiv300-linux-交叉编译工具链。

5.3 执行make,结果如下图

显然是报错了,到底是哪里又错了呢?这原因我也想了半天,估计是因为少了一些依赖包,于是在项目路径Project/下添加了一些依赖库,并减压,如下图。

之前只有git_ipc_cut_1966.tar.gz , ReleaseDPT4.tar.gz后来添加了JaN1SDK2.tar.gz,JaUtils2.tar.gz,JaEmbedded2.tar.gz,然后再次运行,发现还是有报错。于是又想了半天,决定把整个项目文件Project拷贝到根目录里(不行可以试着把文件名改一下改为JaN1SDK,JaUtils,JaEmbedded),如下图

然后再次进入到git_ipc_cut/app_rebuild目录下重新运行make clean, make sdk, make,奇迹般的发现居然通过了,成功编译结果如下图。

我想原因可能是开发这个App生成包的开发人员在设置一些相关路径的时候设置root路径为相应的默认路径了,所以导致,之前我的项目文件Project放在/root/Desktop的时候没有编译通过导致一直报错。

5.4 执行make image,运行结果如下图。

本以为可以顺利通过了,结果偏偏还是报错了,都到了最后一步生成镜像了,还是报错,神马原因呀?搞了半天,最后找了一条命令,就是这条命令:
sudo ln -s /usr/include/asm-generic/ /usr/include/asm
运行这条命令之后再运行make image,哈哈哈哈....结果如下图,自己看吧

编译通过了。

6.进入app_rebulid/bin,查看是否有ipcam_app以及ipcam_app_rel
make image成功之后,进入app_rebulid/bin查看,结果如下图

确实生成了文件ipcam_app以及ipcam_app_rel。
7.进入git_ipc_cut/release,查看是否有对应的bin及rom文件,查看文件名是否正确
进入该目录,查看结果如下图。

确实也生成了对应的bin及rom文件。
到此成功的生成 了镜像文件了。

Ubuntu14.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

发布了26 篇原创文章 · 获赞 11 · 访问量 602

猜你喜欢

转载自blog.csdn.net/weixin_38251305/article/details/103871578