gcc - 毫无意义的链接器错误

gcc - linker error that makes no sense

使用 Pi GPIO 库提供的 Makefile,我制作了 libpigpio.so 分片对象:

# from line 119 in make file
make libpigpio.so 

共享对象创建良好。 Makefile 首先创建 pigpio.o 对象,然后是 command.o 对象,并将它们链接在一起作为共享对象。到目前为止一切顺利!

我写了一个非常小的主函数调用 gpioInitialisegpioGetPWMfrequency

哪些函数并不重要,重要的是它们在pigpio.h中定义并在pigpio.c中编写。

意思是共享对象应该有它们。

我的代码的编译命令是:

 gcc -Wall -pthread -fpic -L. -lpigpio -o drive drive.c 

我仍然收到对这两个函数的未定义引用错误。

毫无意义!如果它没有找到共享对象,它将拒绝该命令。我也试过了-l:libpigpio.so还是一样的问题

我直接在 Rpi A+ 上编译(不使用交叉编译器)。所以它应该有效!

我在这里错过了什么?

这是一个link订单问题。请尝试流畅的命令。

gcc drive.c -Wall -pthread -fpic -o drive -L. -lpigpio

您可以阅读 Why does the order in which libraries are linked sometimes cause errors in GCC? 了解更多详情。