在更新我的家庭自动化服务器时,我决定将树莓派从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,试图让编译器高兴,但是它没有帮助。有人有过这个错误的经验吗?暂时没有想法;- )下一步我应该在哪里搜索?
谢谢你帮忙
1条答案
按热度按时间mzsu5hc01#
一起出现了几个问题。它们可能是我的设置所特有的,但可能对其他人有帮助:
RF24:在版本1.3.7中,常量已被删除(向后兼容性变更,但未增加主版本)
为了修复我的代码,我添加了:
WiringPi(Gordon原件)在64位系统上出现问题,更改为WiringPi的非官方版本
现在一切正常