公司开发的监视器使用的是基于zynq board的板子。由于采用openamp(linux + baremetal并行),所以从xilinux官网下了petalinux来跑demo。
交叉编译工具不甚了解,就用petalinux自带的arm-linux-gnueabihf-gcc,看上去挺新的所以就用它了。
考虑到成本,系统就放在nandflash里(以后出坏块怎么办?)所以需要mtd-utils,搜了一下csdn里各种大佬的博客,掌握了一下基本流程,觉得自己亲自尝试一下移植mtd-utils。并记录遇到的小白问题
下载以下各种库
1.编译、安装zlib
源码的安装一般由3个步骤组成:配置(configure)、编译(make)、安装(make install)
先解压,然后配置
CC=arm-linux-gnueabihf-gcc ./configure --shared --prefix=/opt/pkg/petalinux/tools/linux-i386/gcc-arm-linux-gnueabi
--prefix选项是配置安装的路径,如果不配置该选项,安装后可执行文件默认放在/usr /local/bin,库文件默认放在/usr/local/lib,配置文件默认放在/usr/local/etc,其它的资源文件放在/usr /local/share
编译make
安装sudo make install
大致的日志如下
2.编译、安装lzo
配置 CC=arm-linux-gnueabihf-gcc ./configure --host=arm-linux-gnueabihf --prefix=/opt/pkg/petalinux/tools/linux-i386/gcc-arm-linux-gnueabi
make
sudo make install
这里安装失败了,原因是找不到 arm-linux-ranlib
应该使用arm-linux-gnueabihf-ranlib
修改configure文件 ac_tool_prefix=arm-linux-gnueabihf-
这里明明有arm-linux-gnueabihf-ranlib,但是因为使用sudo改变用户和环境变量的设定,导致找不到对应命令
所以不适用sudo make install
3.编译、安装e2fsprogs(在这里仅安装e2fsprogs-libs-1.41.14)
CC=arm-linux-gnueabihf-gcc ./configure --host=arm-linux --enable-elf-shlibs --prefix=/opt/pkg/petalinux/tools/linux-i386/gcc-arm-linux-gnueabi
make
sudo make install
在inlcude文件夹创建uuid文件夹,拷贝e2fsprogs-libs-1.41.14/lib/uuid/uuid.h进去
4.准备好后编译、安装mtd-utils-1.2.0
这里建议先修改一下Makefile文件,手动添加如下2行
CROSS=arm-linux-gnueabihf-
WITHOUT_XATTR=1
emm.. 试了很多方法也没法解决,反正只需要nand操作的功能,所以修改一下makefile
把需要的结果放在前面编译,出问题的放在后面。就此搞定,上板子试了一下ok