千家信息网

树莓派如何构建交叉编译环境

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,这篇文章将为大家详细讲解有关树莓派如何构建交叉编译环境,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。宿主机:CentOS 7 64bit目标硬件平台:raspber
千家信息网最后更新 2026年11月03日树莓派如何构建交叉编译环境

这篇文章将为大家详细讲解有关树莓派如何构建交叉编译环境,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

宿主机:CentOS 7 64bit

目标硬件平台:raspberry Pi 2B+

GPIO操作库:wiringPi

宿主机工作主目录:/home/xxxxx/raspberryPi

git的安装就不说了。

进入工作主目录

1,下载 树莓官方 交叉编译工具

git clone git://github.com/raspberrypi/tools.git

进入tools/arm-bcm2708/目录

如果是32位系统,使用gcc-linaro-arm-linux-gnueabihf-raspbian/bin

如果是64位系统,使用gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin (本例)

把它添加到环境变量:

sudo nano ~/.bashrc (~表示home目录)

把 export PATH=$PATH:$HOME/raspberryPi/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin

添加到文件结尾,保存退出

使用 source ~/.bashrc 使其生效,或者注销/重启

在任意目录下:输入 arm-linux-gnueabihf-gcc -v 如果可以找到编译器,说明OK

返回到工作主目录

2,下载wiringPi (http://wiringpi.com/download-and-install/)

git clone git://git.drogon.net/wiringPi

在宿主机上下载是为了用其头文件,所以不要进入目录 ./build

3,下载自己的开发目录,根据自己的情况

git clone https://git.oschina.net/xxxxx.git

在目标硬件平台上,

同上下载wiringPi到某个目录,然后这里要进入目录去 ./build

这样在 /usr/local/lib 目录下 会生成 libwiringPiDev.so.2.25 和 libwiringPi.so.2.25 (版本号和lib目录位置有差异,可以先find一下)

通过某种方式,把这些lib拷贝到宿主机工作目录上。比如拷贝到 /home/xxxxx/raspberryPi/rpi2Dev/wiringPi_Lib目录下

在宿主机上, 进入到/home/xxxxx/raspberryPi/rpi2Dev/wiringPi_Lib目录下

创建其无版本号的软连接:

ln -s libwiringPi.so.2.25 libwiringPi.so

ln -s libwiringPiDev.so.2.25 libwiringPiDev.so

如果源文件要引用此lib库,则在makefile里面 -L/xxxx/xxxx -lwiringPi, 指定lib的位置

同时,makefile还要指定包含文件的位置, -I 指定到 wiringPi目录

参考makefile和源文件见结尾。

注意:其实理论上第三方的库是可以在宿主机上交叉编译的,而且应该是那样做的。

但是我打开wiringPi的 build看了,也在其目录下找了, 没有类似configure这样的指定工具链的东西,

可能是我不懂,反正没搞定。如果谁知道怎么搞,说出来大家分享下。

如上一切搞定后,就可以编码编译了,编译出的bin如何上传到树莓派上,方法就很多了。

说一下我的方法。

因为centos上我有做网络程序的开发,所以有安装nginx.

然后我会把自己生成bin的目录软连接到nginx的web目录下,

这样在树莓派端,使用 curl 等工具就可以下载到可执行文件了。非常方便。

在树莓派上写个下载并执行脚本,很简单的事情。

#make file of raspberri pi,crossCC=arm-linux-gnueabihf-gcc  LD=$(CC)TARGET=helloOBJECT=hello.o RASPBERRY_PI_DIR=/home/xxxxx/raspberryPiWIRING_PI_INCLUDE_PATH=$(RASPBERRY_PI_DIR)/wiringPi/wiringPi#此lib是先在 目标平台上生成的WIRING_PI_LIB_PATH=$(RASPBERRY_PI_DIR)/rpi2Dev/wiringPi_Lib$(TARGET):$(OBJECT)        $(LD) -o $(TARGET) $(OBJECT) -L$(WIRING_PI_LIB_PATH) -lwiringPihello.o:hello.c         $(CC) -o hello.o -c hello.c -I$(WIRING_PI_INCLUDE_PATH)        clean:        rm -f $(TARGET) $(OBJECT)        install:        #sudo cp /home/xxxx/pi/bin/hello hello        #cp -f $(TARGET) /usr/bin;chmod -R 777 /usr/bin/pushServer
#include #include #include #include  int main(void)  {         int bright ;    printf("System start...\n");                     if (wiringPiSetup () == -1)                exit (1) ;                pinMode (1, PWM_OUTPUT) ;                while(1)        {                for (bright = 0 ; bright < 1024 ; ++bright)                {                  pwmWrite (1, bright) ;                  delay (1) ;                }                for (bright = 1023 ; bright >= 0 ; --bright)                {                  pwmWrite (1, bright) ;                  delay (1) ;                }        }          return 0;}

关于"树莓派如何构建交叉编译环境"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

目录 编译 树莓 宿主 宿主机 交叉 文件 环境 位置 工具 平台 目标 篇文章 生成 拷贝 方法 更多 源文件 版本 硬件 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 手冲咖啡和咖啡机区别 互联网是第几次科技革命的成果 科技互联网技术 互联网科技金融公司 凡科互联网科技 上游互联网科技 苏州大垚互联网科技 互联网高科技企业 美国互联网前沿科技 互联网科技项目计划书材料类 世界互联网科技公司市值排名 语蝶互联网科技有限公司 互联网科技扶贫时间 健康食品互联网创新科技园项目 2021世界互联网领先科技成果发布 互联网高科技行业有哪些企业 保山浩联互联网科技有限公司 河南商务圈互联网科技有限公司 上海互联网科技园景观 黑龙江互联网科技公司 互联网络科技 科技互联网项目 互联网科技金融 华宇互联网科技 世界互联网科技公司市值排名 昭通互联网科技选哪家 中国航天科技大学国际工业互联网 抖集互联网科技技术咨询 广州梦谷互联网科技有限公司领导 陕西九四连强互联网科技有限公司
0