我在/opt/xx/lib64
中有一个C ++共享库。标头在C中。
在我的执行代码中,我使用CPPFLAGS / CFLAGS和LDFLAGS包括适当的头和链接器选项。在构建过程中,仍然出现“未定义引用”错误。
import (
//#cgo LDFLAGS: -L/opt/xxx/lib64/ -lsessionmgmt
//#cgo CPPFLAGS: -I/opt/xxx/include/
//#include <stdlib.h>
//#include <sessionMgmt/sessionMgmt.h>
"C"
"unsafe"
)
/tmp/go-build609413262/b163/_x002.o: In function `_cgo_e38947506e9d_Cfunc_um_get_lastlogin_info':
/tmp/go-build/cgo-gcc-prolog:52: undefined reference to `um_get_lastlogin_info'
collect2: error: ld returned 1 exit status
make[3]: *** [Makefile:48: vet] Error 2
库位于正确的路径中,并且确实包含必需的方法。 不知道为什么会出错。
$ grep um_get_lastlogin_info /opt/xxx/lib64/libsessionmgmt.so
Binary file /opt/xxx/lib64/libsessionmgmt.so matches
还尝试将pkg-config
与cgo一起使用。仍然出现相同的链接错误。