开源项目 crosstool-ng 极大的简化了交叉编译环境的搭建,为了方便小伙伴,现将教程制作如下:
目标硬件:树莓派3B+
实验环境:Ubuntu22 LTS
第0步:准备出发
查看树莓派内核版本
查看树莓派libc版本,执行ldd命令
如下图:
查看gcc版本
编译过程会自动下载需要的软件包代码,下载失败或比较大的,可以提前下载好,放到tarball目录(下面有描述)
资源下载来源:Index of /pub/gnu
第一步:更新ubuntu系统
sudo apt update
sudo apt upgrade
第二步:安装依赖
sudo apt-get -y install autoconf
sudo apt -y install libncurses5-dev
sudo apt -y install gperf
sudo apt -y install bison
sudo apt -y install flex
sudo apt -y install texinfo
sudo apt -y install help2man
sudo apt -y install gawk
sudo apt -y install libtool
sudo apt -y install libtool-bin
sudo apt -y install dpkg-dev
sudo apt -y install git
第三步:克隆项目
cd ~
mkdir crosstool
cd crosstool
git clone https://github.com/crosstool-ng/crosstool-ng
第四步:依赖检测
cd crosstool-ng # 进入项目目录
./bootstrap
第五步:编译前的配置
./configure
第六步:编译&安装
./make
sudo make install
第七步:创建必要的目录
cd ~/crosstool/crosstool-ng/
mkdir -p ./build/arm
cd ./build/arm
mkdir crosstool-ng-tarballs toolschain
目录:crosstool-ng-tarballs 是编译过程中依赖的软件代码目录
toolschain是交叉工具编译输出目录
第八步:配置交叉编译工具链
cd ~/crosstool/crosstool-ng/
cp samples/arm-unknown-linux-gnueabi/crosstool.config .config
ct-ng menuconfig
第九步:编译工具链
ct-ng build
直到看到如下界面,表示编译完成
第十步:确认与测试
cd ~/crosstool/crosstool-ng/
cd ./build/arm/
vi helloworld.c
测试代码:
#include <stdio.h>
int main()
{
printf("hello world\n");
return 0;
}
编译文件: ./toolschain/bin/arm-unknown-linux-gnueabi-gcc helloworld.c -o helloworld
查看文件格式:file helloworld
直接在主机上运行
上传到树莓派上运行
在树莓派上运行
我公司承接各类技术服务,主要聚焦于:stm32、单片机、嵌入式、QT应用开发、Web+Python+Django应用开发。欢迎合作。