带wiringpi库的交叉编译
树莓派已带有wiringPi库,在树莓派上编译带有<wiringPi.h>库的源码,必须使用
gcc demo1.c -lwiringPi -o demo1.out
但是在Ubuntu上交叉编译时就需要外接库,否则编译失败
第一步、将下面这个wiringpi外接库包这个放入linux中
第二步、安装外接库,./build进行安装
我安装的时候遇到个问题
**解决办法:**安装make,然后再./build安装
sudo apt-get install make
第三步、找到wiringPi库里的wiringpi里的头文件,知道它的路径
第四步、在编译时加上库,发现编译的调试信息不一样了
第五步、再加上-lwiringPi进行编译
结果:还是发现编译报错
>arm-linux-gnueabihf-gcc demo1.c -I
>/home/admin_/learn/lessonPi/WiringPi/wiringPi -lwiringPi -o demo1
/home/admin_/learn/lessonPi/tools-master/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin/../lib/gcc/arm-linux-gnueabihf/4.8.3/../../../../arm-linux-gnueabihf/bin/ld: 找不到 -lwiringPi
collect2: 错误: ld 返回 1
原因在于-lwiringPi工具链跑到/usr/local/lib下运行,我们查看链接的属性,发现是X86架构的,而我们使用的交叉编译工具链是ARM架构的,平台不兼容,这就是问题所在
第六步、解决办法是将树莓派的wiringPi库拿上来用
树莓派wiringPi库的路径:/usr/lib/
scp libwiringPi.so.2.50 admin_@192.168.31.21:/home/admin_/learn/lessonPi
将wiringPi库拷贝到Ubuntu上,软链接需要自行创建,直接拷贝无法链接到.so.2.50
第七步、创建软链接
软链接的参考博文:https://www.cnblogs.com/zhangna1998517/p/11347364.html
软链接:
1、链接文件有类似于Windows的快捷方式。
2、它实际上是一个特殊的文件。在符号连接中,文件实际上是一个文本文件,其中包含的有另一文件的位置信息。
3、不占用磁盘空间
生成软链接:
ln -s libwiringPi.so.2.50 libwiringPi.so
检查软链接生成成功!
第八步、编译
arm-linux-gnueabihf-gcc demo1.c -I /home/admin_/learn/lessonPi/WiringPi/wiringPi -L. -lwiringPi -o demo1.out
编译成功!
补充:
grep gcc * -nir//查找gcc在所有文件内,n是显示行号,i是不区分大小写,r是递归
history | grep demo2//从历史记录里查看demo2有关的命令