打包小奶板sdk时遇到的问题及解决

243 阅读3分钟

问题:

使用公司的服务器,运行./configure会失败,原因为缺失libconfuse库。

image.png

运行pkg-config --list-all后检查,发现确实没有libconfuse库,排除PKG_CONFIG_PATH未配置的原因。

试图安装,但权限不够。

解决:

不安装到服务器,直接进行编译。首先获取libconfuse库:

wget --no-check-certificate --content-disposition https://github.com/libconfuse/libconfuse/releases/download/v3.3/confuse-3.3.tar.gz

解压:

tar xf confuse-3.3 tar.xz 
cd confuse-3.3/ 
./configure 
make -j9 
sudo make install

问题:

权限不够。

解决:

由于make install命令默认把库装在权限较高的路径,需要configure –-prefix预定义到自己的路径里,详见libconfuse/INSTALL at master · libconfuse/libconfuse (github.com)

image.png

mkdir build 
./configure --prefix=/data/yiyun.ma/confuse-3.3/build 
make 
make install

安装好libconfuse后,需要配置pkg-config。

首先找到libconfuse.pc文件,我的路径在/home/myname/lib/pkgconfig下

接着利用vim进入~/.bashrc文档:

vi ~/.bashrc

按insert键进入键入模式,在最后一行加入:

export PKG_CONFIG_PATH=/home/myname/lib/pkgconfig/

然后按esc退出键入模式,输入':wq'关闭bashrc,然后输入source让更改生效:

source ~/.bashrc

接下来开始查看pkg-config里是否有libconfuse库:

pkg-config --list-all

image.png

再回去安装genimage

问题: pack_sd_image的时候镜像功能报错了

解决:回头看makefile文件,${Q}前缀用于忽略执行过程中可能出现的错误,--quiet,打印出来的报错也有(ignored),无视即可。

image.png

问题:找不到镜像文件了。。

解决:还是上图代码,cp的报错应该是genimage.cfg没有复制过来,可能是变量${BUILD_PATH}${CHIP_ARCH_L}${PROJECT_FULLNAME}的值未正确设置或未定义。开始打印排查。发现CHIP_ARCH_L为空,在Makefile里找到了他的定义,即把CHIP_ARCH小写化:`

image.png

然而CHIP_ARCH不为空。但语句也没问题,上下文也看了没什么帮助,考虑到Milk-V Duo只用了cv180x,所以`用了种很不优雅的解决方式:

image.png

但source后重新build,CHIP_ARCH_L仍为空,考虑在别的地方不优雅:

image.png

还是没用,最后发现cp指令要在一行里完成:

image.png

问题:发现genimage并没有装好:

image.png

解决:

把genimage加到路径里,export PATH=/data/myname/genimage:$PATH

一定要加上:PATH,不然路径会出问题,/bin里的命令都用不了。但可以靠exportPATH=/usr/bin:PATH,不然路径会出问题,/bin里的命令都用不了。但可以靠export PATH=/usr/bin:PATH挽救。一般如果是某个项目要用或者一次性的变量就不要写到 bashrc里,直接在终端 export PATH=玛卡巴卡,这样即使有问题关掉终端就行了,它的生命周期跟本次登录一样

问题:

genext2fs: not found

解决:安装genext2fs并把其加入路径,和genimage一样。

问题:

.image文件烧录进sd卡后上电开始报错,尝试拔插sd卡后发现报错和无sd卡插入的时候一致。

image.png

询问了一下同事,发现.image文件是需要刻录进sd卡的,不是简单的复制粘贴就行了的,论坛上也有描述使用Docker搭建基于Ubuntu22.04的milk-v duo开发环境 - Duo - MilkV Community

image.png

利用diskimager烧录进sd卡后,终于可以使用:

error -71是硬件的问题,无视即可

image.png

问题:

Gerrit上拉取的最新版本代码和GitHub上开源的不太一样,什么也不改动,直接build_all的时候会报错,没有cvitek CV180X musl riscv64 defconfig这个文件,makefile会在574行卡住:

image.png

解决:

问同事,内部没有buildroot代码,需要从 cvi_mmf_sdk里面拷贝一份buildroot到 cvi_mmf_sdk_intl中

问题:

git push没hook

image.png

解决:根据Hint指示安装hook后,再git commit --amend即可

问题:在不添加路径的情况下在同级文件下找不到genimage

解决:把genimage放在cvi_mmf_sdk/install/soc_cv1800b_sophpi_duo_sd/下,这是脚本最后抛出异常退出的地方