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

gcc - linker error that makes no sense

提问人:Sam Hammamy 提问时间:3/31/2018 更新时间:4/2/2018 访问量:1007

问:

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

# from line 119 in make file
make libpigpio.so 

共享对象创建正常。Makefile 首先创建对象,然后创建对象,并将它们作为共享对象链接在一起。目前为止,一切都好!pigpio.ocommand.o

我编写了一个非常小的 main 函数,它调用 和 。gpioInitialisegpioGetPWMfrequency

哪些函数并不重要,重要的是它们被定义和编写。pigpio.hpigpio.c

这意味着共享对象应该具有它们。

我的代码的编译命令是:

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

尽管如此,我仍然得到了这两个函数的未定义引用错误。

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

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

我在这里错过了什么?

gcc ld 未定义引用

评论


答:

2赞 gzh 4/2/2018 #1

这是一个链接顺序问题。请尝试 flowing 命令。

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

你可以阅读为什么链接库的顺序有时会导致GCC中的错误?