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
对象,并将它们链接在一起作为共享对象。到目前为止一切顺利!
我写了一个非常小的主函数调用 gpioInitialise
和 gpioGetPWMfrequency
。
哪些函数并不重要,重要的是它们在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? 了解更多详情。
使用 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+ 上编译(不使用交叉编译器)。所以它应该有效!
我在这里错过了什么?
这是一个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? 了解更多详情。