rk3568 sdk编译以及PCL库开启
使用的时正点原子的rk3568开发板,官方库的同步需要使用ssh公钥与官方库repo,故直接使用正点原子官方提供的sdk包。宿主机使用Ubuntu20.04。
1、安装依赖包
sudo apt-get update sudo apt-get install curl python2.7 python-pyelftools git ssh make gcc libssl-dev liblz4-tool expect \ g++ patchelf chrpath gawk texinfo chrpath diffstat binfmt-support qemu-user-static live-build bison \ flex fakeroot cmake gcc-multilib g++-multilib unzip device-tree-compiler python3-pip \ libncurses-dev python3-pyelftools vim mtd-utils
将 python2 设置为系统默认 python 版本:
sudo rm -rf /usr/bin/python sudo ln -s /usr/bin/python2 /usr/bin/python
2、配置git
git config --global user.name "your name" git config --global user.email "your email"
3、安装SDK
使用如下命令解压sdk后在解压目录下得到一个.repo目录,需要使用命令 ls -al 才能看到。
mkdir ~/rk3568_linux_sdk tar xvf atk-rk3568_linux_release_v1.0_20230620.tgz -C ~/rk3568_linux_sdk
使用如下命令将sdk源码从仓库检出。这一步就跟iMX93芯片使用repo从git仓库拉代码一样,只是少了下载过程。
cd ~/rk3568_linux_sdk/ .repo/repo/repo sync -l -j10
4、编译
检出源码后,配置板级开发环境,选择正点原子开发板对应的配置文件,输入数字后回车确认即可完成板级配置。
./build.sh lunch
进入sdk根目录,执行下方命令开始进行全编译。
./build.sh all
编译buildroot时会从git仓库中拉取源码编译并安装。
中间遇到提示gcc-initial duplicate patch的错误,删除此组件的中间文件后重新编译就ok了
rm -rf ./buildroot/output/rockchip_rk3568/build/host-gcc-final-10.3.0
全编译成功后有如下提示
5、buildroot中增加pcl库支持
项目中需要使用PCL库,但原工程未包含此库,需要手动打开。
进入buildroot目录,执行source build/envsetup.sh rockchip_rk3568
配置芯片环境。
执行make menuconfig
进入配置菜单,进入下图路径选中PCL库。
重新编译buildroot,提示boost压缩包解压错误。原因是buildroot/package/boost/boost.mk文件中的源码下载连接失效,可以手动从https://archives.boost.io/release/1.79.0/source/boost_1_79_0.tar.bz2 下载后放到buildroot/dl路径下。
完成后回到sdk根目录,执行build.sh cleanall
清理,然后重编译 build.sh all
等待编译完成。
尽量不要在buildroot目录下直接使用make来编译,尤其是编译过程中出错导致编译中断后,最好使用cleanall清理后再重新编译。
编译成功后将buildroot/output/rockchip_rk3568/images/目录下生成rootfs.ext2文件重命名为img文件后用于烧录。
6、同步更新后的库到交叉编译器工具链中
编译完成后还需要拷贝buildroot/output/rockchip_rk3568/host/aarch64-buildroot-linux-gnu/sysroot/usr文件夹到对应的交叉编译工具链的目录下,同步更新后的库文件。