做支付网站,想要推广页,最近一周的热点新闻,有没有网站可以做地图带wiringPi库的交叉编译如何进行
先交叉编译wiringPi库#xff0c;编译出的库适合香橙派#xff0c;这时候交叉编译可执行程序的平台和链接库的格式也是正确的#xff0c;然后通过-I和-L来指定链接的wiringPi库的头文件和库的位置#xff0c;但是现在还没有学习过#xf…带wiringPi库的交叉编译如何进行
先交叉编译wiringPi库编译出的库适合香橙派这时候交叉编译可执行程序的平台和链接库的格式也是正确的然后通过-I和-L来指定链接的wiringPi库的头文件和库的位置但是现在还没有学习过后面学了补上
此时如果把wiringPi库拿到Ubuntu上进行编译后直接使用会报错 arm-linux-gnueabihf-gcc demo2.c -I -lwiringPi /home/CLC/lessonPI/WiringPi/wiringPi -lwiringPi/home/CLC/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:cannot find -lwiringPi collect2: error: ld returned 1 exit status报错原因因为链接的库的格式不对是宿主机的平台查看库的文件格式会发现是x86的平台
2.直接把香橙派上编译好的wiringPi库传到ubuntu中进行使用
(1)将香橙派上的wiringPi库拿到ubuntu上
2给这两个库建立各自的软链接 ln -s libwiringPi.so.2.46 libwiringPi.so ln -s libwiringPiDev.so.2.46 libwiringPiDev.so3进行交叉编译分别给出头文件和库的路径
csb.c的源代码这是香橙派控制超声波模块测距的代码
#include stdio.h
#include sys/time.h
#include wiringPi.h
#include stdlib.h
#include unistd.h#define Trig 0
#define Echo 1double getDistance()
{double dis;struct timeval start;struct timeval stop;pinMode(Trig, OUTPUT);//设置Trig为输出引脚pinMode(Echo, INPUT);//设置Echo为输入引脚/*让超声波发波*/digitalWrite(Trig ,LOW);usleep(5);digitalWrite(Trig ,HIGH);usleep(10);digitalWrite(Trig ,LOW);while(!digitalRead(Echo));//等待其发送波gettimeofday(start,NULL);//波发送出去的时候的时间while(digitalRead(Echo));//等待波回来gettimeofday(stop,NULL);//波回来的时候的时间long diffTime 1000000*(stop.tv_sec-start.tv_sec)(stop.tv_usec -start.tv_usec);//计算时间printf(diffTime %ld\n,diffTime);dis (double)diffTime/1000000 * 34000 / 2;//计算距离return dis;
}int main()
{double dis;if(wiringPiSetup() -1){fprintf(stderr,%s,initWringPi error);exit(-1);}while(1){dis getDistance();printf(dis %.2fcm\n,dis);usleep(500000);}return 0;
}编译
aarch64-linux-gnu-gcc csb.c -I ./wiringOP-master/wiringPi -lwiringPi -lwiringPiDev -lpthread -lm -lcrypt -lrt -L ./ -o csb然后可以成功编译出带wiringpi库的可执行文件
4将可执行的文件传回香橙派中进行运行
先查看一下交叉编译后的可执行文件格式
file csb然后运行结果如下