gcc - 没有意义的链接器错误

时间:2018-03-31 11:32:49

标签: gcc ld undefined-reference

使用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 +(不使用交叉编译器)。所以它应该有效!

我在这里缺少什么?

1 个答案:

答案 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?了解更多详情。