x86下交叉编译树莓派程序遇到一个问题

如下代码,我写了一个控制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

image.png

阅读 3.2k
1 个回答

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

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题