编译环境搭建及库编译说明
网关与编译环境
不同网关型号所使用的处理器如下:
AGN1M、AGN2M、AGO1M 新唐NUC980
AGO2M 微芯SAM9X60
AGN5M、AGN9M 翱捷ASR1802S
AGN10M
编译环境搭建
本文档涉及的编译环境搭建是在虚拟机中进行,环境及系统如下:
虚拟机软件: VMware Workstation Pro 17.5.0
系统版本: ubuntu 24.04(镜像文件名ubuntu-24.04-desktop-amd64.iso)
ubuntu系统安装使用默认,磁盘空间120G,根分区30G,/home分区占用剩余空间。
新唐NUC980交叉编译环境搭建
将交叉编译工具链压缩文件arm-nuvoton-linux.tar.gz移动到/opt/目录下然后解压,然后将路径/opt/arm-nuvoton-linux/usr/bin添加到PATH中:
- 打开文件/home/ubuntu/.bashrc并在文件最后添加以下内容:
PATH=$PATH:/opt/arm-nuvoton-linux/usr/bin
- 以root权限打开文件/root/.bashrc并在文件最后添加以下内容:
PATH=$PATH:/opt/arm-nuvoton-linux/usr/bin
由于ubuntu是64位系统,新唐NUC980交叉编译工具链是32位程序,故需要安装32位程序的运行系统库,执行以下三条命令(#开头的行为注释,不执行):
- 开启i386架构的支持
sudo dpkg --add-architecture i386 - 获得i386架构包的最新信息
sudo apt update - 安装i386架构的libc和stdc++的运行库
sudo apt install libc6:i386 libncurses5:i386 libstdc++6:i386
在执行以上三条命令后,使用新唐交叉编译工具链编译时会报以下错误:
查看文件cc1plus的动态部分信息,如下图所示:
cc1plus依赖库libmpc、libmpfr、libgmp,执行以下命令来安装依赖库:
sudo apt install libmpc-dev:i386 libmpfr-dev:i386 libgmp-dev:i386
安装好依赖库后,需要解决安装库的版本与cc1plus依赖库版本不一致的问题,执行上面安装后,i386架构的库目录/usr/lib/i386-linux-gnu下截图如下所示:
由于cc1plus依赖libmpfr.so.4,而所安装的libmpfr所创建的是libmpfr.so.6,需在root权限下在目录/usr/lib/i386-linux-gnu下执行以下命令创建软链接libmpfr.so.4指向文件libmpfr.so.6.2.1
解决cc1plus对libmpfr.so.4的依赖问题后,可正常使用arm-nuvoton-linux-gnueabi-gcc/ arm-nuvoton-linux-gnueabi-g++编译器,新唐NUC980交叉编译的开发环境搭建完成。微芯SAM9X60交叉编译环境搭建
将交叉编译工具链压缩文件sam9x60.tar.gz移动到/opt/目录下然后解压,然后将路径/opt/sam9x60/bin添加到PATH中:
- 打开文件/home/ubuntu/.bashrc并在文件最后添加以下内容:
PATH=$PATH:/opt/sam9x60/bin
- 以root权限打开文件/root/.bashrc并在文件最后添加以下内容:
PATH=$PATH:/opt/sam9x60/bin
设置完PATH环境变量后,可正常使用arm-buildroot-linux-gnueabi-gcc/ arm-buildroot-linux-gnueabi-g++编译器,微芯SAM9X60交叉编译的开发环境搭建完成。
翱捷科技ASR1802S交叉编译环境搭建
将交叉编译工具链压缩文件openwrt_compiler.tar.gz移动到/opt/目录下并解压,然后将目录x86_64-linux重命名为arm-openwrt-linux,并将路径/opt/arm-openwrt-linux/bin添加到PATH中:
- 打开文件/home/ubuntu/.bashrc并在文件最后添加以下内容:
PATH=$PATH:/opt/arm-openwrt-linux/bin
- 以root权限打开文件/root/.bashrc并在文件最后添加以下内容:
PATH=$PATH:/opt/arm-openwrt-linux/bin
设置完PATH环境变量后,可正常使用arm-openwrt-linux-gcc/ arm-openwrt-linux-g++编译器,但在编译Poco时会报部分头文件错误,把以下压缩文件解压到目录/opt/arm-openwrt-linux/arm-openwrt-linux/include,解压后目录列表如下图所示:
至此翱捷ASR1802S交叉编译的开发环境搭建完成。
全志RK3568交叉编译环境搭建
将交叉编译工具链压缩文件gcc-linaro-5.3.1-2016.05-x86_64_arm-linux-gnueabi.tar.xz移动到/opt/目录下解压,然后将目录gcc-linaro-5.3.1-2016.05-x86_64_arm-linux-gnueabi重命名为arm-allwinner-linux,并将路径/opt/ arm-allwinner-linux/bin添加到PATH中:
- 打开文件/home/ubuntu/.bashrc并在文件最后添加以下内容:
PATH=$PATH:/opt/ arm-allwinner-linux/bin
- 以root权限打开文件/root/.bashrc并在文件最后添加以下内容:
PATH=$PATH:/opt/ arm-allwinner-linux/bin
设置完PATH环境变量后,可正常使用arm-linux-gnueabi-gcc/ arm-linux-gnueabi-g++编译器,全志RK3568交叉编译的开发环境搭建完成。
瑞芯微交叉编译环境搭建
解压瑞芯微交叉编译工具链压缩文件prebuilts.tar.bz2并将解压后目录下的目录gcc-buildroot-9.3.0-2020.03-x86_64_aarch64-rockchip-linux-gnu移动到/opt/目录下并重命名为aarch64-rockchip-linux-gnu,然后将路径/opt/aarch64-rockchip-linux-gnu/bin添加到PATH中:
- 打开文件/home/ubuntu/.bashrc并在文件最后添加以下内容:
PATH=$PATH:/opt/aarch64-rockchip-linux-gnu/bin
- 以root权限打开文件/root/.bashrc并在文件最后添加以下内容:
PATH=$PATH:/opt/aarch64-rockchip-linux-gnu/bin
修改完PATH后,使用交叉编译工具链编译c++源文件会报cc1plus依赖库错误,查看文件cc1plus的动态部分信息,如下图所示:
执行以下命令来安装cc1plus依赖的第三方库libisl、libmpc、libmpfr、libgmp:
sudo apt install libisl-dev libmpc-dev libmpfr-dev libgmp-dev
切换到目录/usr/lib/x86_64-linux-gnu下,对比安装库与cc1plus依赖库的版本,安装库版本如下所示:
安装的libisl、libmpfr与cc1plus依赖库的版本不一致,执行以下命令来创建cc1plus依赖库的版本软链接:
sudo ln -s libisl.so.23.3.0 libisl.so.15
sudo ln -s libmpfr.so.6.2.1 libmpfr.so.4
解决cc1plus对libisl和libmpfr的依赖问题后,,可正常使用aarch64-rockchip-linux-gnu-gcc/ aarch64-rockchip-linux-gnu-g++编译器,瑞芯微交叉编译的开发环境搭建完成。
添加评论