抬头仰望星空,是否能发现自己的渺小。

伪斜杠青年

人们总是混淆了欲望和理想

Ubuntu Server2020.4 树莓派WiringPi的安装与编译

世上本没有路,走的人多了便有了路。

路都被踩烂了

WiringPi,一个树莓派的库,主要是定义了一些树莓派的 GIO 操作,例如 I2C 引脚通信,同时树莓派还有几个工具:raspi-config、pi4j。工具就不说了,WiringPi这个库,挺曲折的。

首先WiringPi在 Ubuntu 源里的版本是 v1.2,也就是说如果直接安装,是 v1.2 ,此时的库不支持树莓派4b+(8G),去官网看,是树莓派维护者已经废弃转交其他人进行维护,新版本暂时不在 Ubuntu 源里。需要手动安装。开源地址:

https://github.com/WiringPi/WiringPi

直接整个 zip 下载下来,然后解压到树莓派执行以下命令即可:

sudo ./build

终端输出为:

WiringPi Library
[UnInstall]
make: Nothing to be done for 'all'.
[Install Headers]
[Install Dynamic Lib]


WiringPi Devices Library
[UnInstall]
make: Nothing to be done for 'all'.
[Install Headers]
[Install Dynamic Lib]


GPIO Utility
make: Nothing to be done for 'all'.
[Install]


All Done.

NOTE: To compile programs with wiringPi, you need to add:
    -lwiringPi
  to your compile line(s) To use the Gertboard, MaxDetect, etc.
  code (the devLib), you need to also add:
    -lwiringPiDev
  to your compile line(s).

然后看到后面的 NOTE,我本以为就可以愉快愉快的编译了,实际上没这么简单,依赖的树莓派的这两个头文件找不到,

#wiringPi.h
#wiringPiI2C.h

一番尝试,不想像网上说的那样,拷贝到什么其他位置,于是寻找其他方案,没想到找到了:WiringPi on Ubuntu Mate

由于我也不是做 c/c++的(勉强可以写写 c 代码),加的参数也没去研究,能用就行。

gcc -O3 -Wall -I/usr/local/include -Winline -pipe -L/usr/local/lib 多个或单个需要编译的文件 -lwiringPi -lwiringPiDev -lpthread -lm -lcrypt -lrt -o 生成的可执行文件名

例:

gcc -O3 -Wall -I/usr/local/include -Winline -pipe -L/usr/local/lib fan.c -lwiringPi -lwiringPiDev -lpthread -lm -lcrypt -lrt -o fan

于是,淘宝买的风扇,总算能转了,他们的文件,总是一堆 error,懒得麻烦了,自己写吧,不就是几个 I2C 加 if else ~ 而且源码在手,怕啥。


0条评论

发表评论