迁移到Raspberry PI 3B+,RF24库和C代码编译出现问题

hrysbysz  于 2022-12-17  发布在  其他
关注(0)|答案(1)|浏览(134)

在更新我的家庭自动化服务器时,我决定将树莓派从2B升级到3B+。
所用代码相同,但在3B上出现以下错误

g++ -Wall -o pimain Server_HomeAutomation.o -I. -I/usr/local/include/RF24 -L/usr/local/lib -lrf24
/usr/bin/ld: /usr/local/lib/librf24.so: undefined reference to `gpioSetISRFunc'
/usr/bin/ld: /usr/local/lib/librf24.so: undefined reference to `gpioInitialise'
collect2: error: ld returned 1 exit status
make: *** [makefile:26: pimain] Error 1

我知道的唯一区别是3B使用的是GitHub的RF 24实际版本,2B版本的RF 24是旧的。(2B的RF 24旧源代码在3B上不编译)我安装了Cmake指南中描述的RF 24。
由于不同的RF 24,库的初始化从2B代码更改

RF24 radio(RPI_V2_GPIO_P1_22, BCM2835_SPI_CS0, BCM2835_SPI_SPEED_8MHZ);

至(根据文件1000000 == 1 Mhz)

#define BCM2835_SPI_SPEED_8MHZ 8000000
RF24 radio(RPI_V2_GPIO_P1_22, BCM2835_SPI_CS0, BCM2835_SPI_SPEED_8MHZ);

因为宏BCM2835_SPI_SPEED_8MHZ在RF 24中不再可用。
错误描述gpio指出了gpio问题,但是我用BCM2835 Driver (aka RPi)编译了RF 24,当它不工作的时候,我也试了SPIDEV (most compatible, Default),当它仍然不工作的时候,我也安装了gpio,试图让编译器高兴,但是它没有帮助。有人有过这个错误的经验吗?暂时没有想法;- )下一步我应该在哪里搜索?
谢谢你帮忙

mzsu5hc0

mzsu5hc01#

一起出现了几个问题。它们可能是我的设置所特有的,但可能对其他人有帮助:
RF24:在版本1.3.7中,常量已被删除(向后兼容性变更,但未增加主版本)
为了修复我的代码,我添加了:

#define RPI_V2_GPIO_P1_22 22
#define BCM2835_SPI_CS0 0
#define BCM2835_SPI_SPEED_8MHZ 8000000

WiringPi(Gordon原件)在64位系统上出现问题,更改为WiringPi的非官方版本
现在一切正常

相关问题