wiringpi -php,树莓派交叉编译环境构建(含 wiringPi)

宿主机: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

返回到工作主目录

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

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

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

在目标硬件平台上,

同上下载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.25libwiringPi.so

ln -s  libwiringPiDev.so.2.25libwiringPiDev.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,cross

CC=arm-linux-gnueabihf-gcc

LD=$(CC)

TARGET=hello

OBJECT=hello.o

RASPBERRY_PI_DIR=/home/xxxxx/raspberryPi

WIRING_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) -lwiringPi

hello.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 

{

pwmWrite (1, bright) ;

delay (1) ;

}

for (bright = 1023 ; bright >= 0 ; --bright)

{

pwmWrite (1, bright) ;

delay (1) ;

}

}

return 0;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值