环境准备
- 树莓派3B+
- wsl2 ubuntu20.04
一开始使用的是wsl2的ubuntu22.04,发现编译好之后的二进制文件放到树莓派上会显示找不到LIBC 2.34。如下错误:
./a.out: /lib/arm-linux-gnueabihf/libc.so.6: version `GLIBC_2.34' not found (required by ./a.out)
使用命令ldd --version
查看树莓派/ubuntu使用的glibc版本,发现是树莓派使用的是2.31,ubuntu使用的是2.34,所以在执行的时候出现了不匹配的情况。大家在使用其他树莓派型号或者ubuntu版本时,需要注意一下glibc的版本是否匹配。
下载树莓派交叉编译工具链
下载命令
git clone https://github.com/raspberrypi/tools
如果下载速度较慢的话,可以通过gitee作为中转,然后在clone对应gitee的仓库就可以了。或者在网上搜索其他的解决办法。
添加环境变量并编译
下载完成之后,就可以把对应交叉编译工具所在路径添加至环境变量中,方便使用。以下为示例,大家可以根据自己本地的路径进行修改命令
vim ~/.bashrc
export PATH=$PATH:/home/haha/tools/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin
source ~/.bashrc
- 本地写一个hello word的test.c文件
#include <stdio.h>
int main()
{
printf("hello world !\n");
return 0;
}
- 执行编译命令
arm-linux-gnueabihf-gcc test.c
- 将生成的文件拷贝到树莓派上执行
scp a.out haha@192.168.xxx.xxx:/home/haha
最后在树莓派上执行成功就搭建完成啦