使用Pi GPIO库提供的Makefile,我使用以下命令创建了libpigpio.so分片对象:
# from line 119 in make file
make libpigpio.so
共享对象创建正常。 Makefile首先创建pigpio.o
对象,然后创建command.o
对象,并将它们作为共享对象链接在一起。到目前为止一切都很好!
我写了一个非常小的主函数来调用gpioInitialise
和gpioGetPWMfrequency
。
在pigpio.h
中定义哪些函数并在pigpio.c
中编写,这些函数的重要性并不重要。
意味着共享对象应该拥有它们。
我的代码的编译命令是:
gcc -Wall -pthread -fpic -L. -lpigpio -o drive drive.c
我仍然得到这两个函数的未定义引用错误。
没用!如果它没有找到共享对象,它将拒绝该命令。我也尝试了-l:libpigpio.so
并且仍然存在同样的问题。
我正在直接编译Rpi A +(不使用交叉编译器)。所以它应该有效!
我在这里缺少什么?
答案 0 :(得分:1)
这是一个链接订单问题。请尝试流动的命令。
gcc drive.c -Wall -pthread -fpic -o drive -L. -lpigpio
您可以阅读Why does the order in which libraries are linked sometimes cause errors in GCC?了解更多详情。