交叉编译之wiringPi库,【全志H616,orangepi-zero2】

书接上回

上回已经完整的安装了全志的gcc交叉编译工具
https://blog.csdn.net/qq_52749711/article/details/132306764

wiringPi全志库下载

下载链接
先搞到自己的开发板,直接解压

unzip wiringOP-master.zip

解压完进入目录,找到build文件所在地
直接运行

./build

则直接安装完成,可以使用

之后同样步骤搞到自己虚拟机上

注意虚拟机输入./build之后,会弹出让你选择安装选项
之后弹出如下框框
在这里插入图片描述
按道理安装25,或者26都可以,我输入的是26(眼瞎看错了,但是居然可行,有大佬可以说一下26是什么鬼)

装好之后,直接运行对应带有wiringPi库的程序是不行的,会直接报错
为什么?(走了很多弯路,总结)
因为即使选择了对应型号,他的内部编译并不是用的咱们上回安装的交叉编译gcc,而是使用虚拟机的gcc,导致,出来的库都是x86平台下的。所以需要把虚拟机的库重新拷贝到虚拟机
所需库:
在这里插入图片描述
在这里插入图片描述
这俩个库分别在,开发板的wiringPi安装目录,的wiringPi目录和devLib目录下面,使用scp命令考出来

scp libwiringPi.so.2.46 shunge@192.168.10.31:/home/shunge
scp libwiringPiDev.so.2.46 shunge@192.168.10.31:/home/shunge

成功之后,要创建链接,方便库的调用,总不会你想调用库需要加上一堆版本信息把~

建立软链接

这里普及一下俩种链接

软连接

windows快捷方式见过吧,没错,linux软连接就是类似快捷方式,建立之后在你选定的位置上生成一个文件的镜像,不会占用磁盘空间,这个文件包含了正真文件的位置信息等等

软连接创建

//指令 参数   要被链接的文件    软链接文件名字
 ln -s libwiringPi.so.2.46 libwiringPi.so

-s就是符号链接的意思

硬链接

它会在你选定的位置上生成一个和源文件大小相同的文件

硬链接创建

不加参数-s即可

ln libwiringPi.so.2.46 libwiringPi.so

看了之后你会怎么选择呢?

果断软连接
输入命令

 ln -s libwiringPi.so.2.46 libwiringPi.so
 ln -s libwiringPiDev.so.2.46 libwiringPiDev.so

于是乎可以编译带有wiringPi库的.c文件了

测试

之前写好的一个舵机程序,正好用来实验。(代码不放这里看了,主要讲解编译过程)

编写build.sh方便以后直接编译

aarch64-none-linux-gnu-gcc $1 -I ./wiringOP-master/wiringPi -L. -lwiringPi -lwiringPiDev -lpthread -lm -lcrypt -lrt -g -o $2

使用build.sh编译带有wiringPi库的.c文件

./build.sh servo.c servo

在这里插入图片描述
没有报错信息,且在当前目录生成了servo文件
使用file看文件信息。
在这里插入图片描述
完美,ARM,并不是x86
使用spc上传树莓派

scp servo orangepi@192.168.10.25:/home/orangepi/test

在这里插入图片描述

树莓派运行servo文件

在这里插入图片描述

结束

如遇问题,欢迎提出,共同进步

猜你喜欢

转载自blog.csdn.net/qq_52749711/article/details/132329698