如下代码,我写了一个控制GPIO的程序,调用到了wiringPi.h,在编译时报错,我用x86的gcc编译能成功,用了arm上的编译器就编译不成功了。
查资料好像是可以把树莓派的so文件拷贝过来用,但是我的树莓派被我刷成了openwrt,系统干净的一批,根本没有libwiringPi.so,有什么办法解决吗?
rxxy@RXXY-PC:/mnt/c/Users/rxxy/CLionProjects/untitled$ aarch64-linux-gnu-gcc led.c -o led -I /mnt/c/Users/rxxy/CLionProjects/untitled/WiringPi/wiringPi -LwiringPi
/usr/lib/gcc-cross/aarch64-linux-gnu/9/../../../../aarch64-linux-gnu/bin/ld: /tmp/ccJeZJe0.o: in function `main':
led.c:(.text+0x8): undefined reference to `wiringPiSetup'
/usr/lib/gcc-cross/aarch64-linux-gnu/9/../../../../aarch64-linux-gnu/bin/ld: led.c:(.text+0x24): undefined reference to `pinMode'
/usr/lib/gcc-cross/aarch64-linux-gnu/9/../../../../aarch64-linux-gnu/bin/ld: led.c:(.text+0x38): undefined reference to `digitalWrite'
/usr/lib/gcc-cross/aarch64-linux-gnu/9/../../../../aarch64-linux-gnu/bin/ld: led.c:(.text+0x40): undefined reference to `delay'
/usr/lib/gcc-cross/aarch64-linux-gnu/9/../../../../aarch64-linux-gnu/bin/ld: led.c:(.text+0x4c): undefined reference to `digitalWrite'
/usr/lib/gcc-cross/aarch64-linux-gnu/9/../../../../aarch64-linux-gnu/bin/ld: led.c:(.text+0x54): undefined reference to `delay'
collect2: error: ld returned 1 exit status
https://forums.raspberrypi.co...
帮你google了一下,看问答说是你应该用
g++
编译而不是gcc
EDIT: 似乎你应该加上
-lwiringPi
参数,可能这几个函数存在于libwiringPi
: https://stackoverflow.com/que...-L
和-l
是不一样的,-L
要跟lib的绝对路径,比如-L/path/to/libwringPi.so
,而-l
是在libs
目录下查找,不需要跟.so
后缀,也不需要加lib
前缀,只是加上lib的名称而已,如-lwringPi