0

我试图链接到一个 swiftkey 库并得到这个错误:

g++ test.cpp -I include/swiftkeysdk/ -L lib/x86/ -lswiftkeysdk-cpp

/usr/bin/ld: warning: libm.so.2, needed by lib/x86//libswiftkeysdk-cpp.so, not found (try using -rpath or -rpath-link)
/usr/bin/ld: warning: libcpp.so.4, needed by lib/x86//libswiftkeysdk-cpp.so, not found (try using -rpath or -rpath-link)
/usr/bin/ld: warning: libc.so.3, needed by lib/x86//libswiftkeysdk-cpp.so, not found (try using -rpath or -rpath-link)

$ ldconfig -p | grep "libm.so"
libm.so.6 (libc6, OS ABI: Linux 2.6.15) => /lib/i386-linux-gnu/libm.so.6
libm.so (libc6, OS ABI: Linux 2.6.15) => /usr/lib/i386-linux-gnu/libm.so
$ ldconfig -p | grep "libc.so"
libc.so.6 (libc6, OS ABI: Linux 2.6.15) => /lib/i386-linux-gnu/libc.so.6

但我的 g++ 与其他项目配合得很好。有人知道 .so 后面的数字代表什么吗?以及如何解决这个问题?

4

1 回答 1

1

后面.so的数字是库的版本号。版本号定义库的 ABI。也就是说,不同版本的源代码可能使用相同的so编号,只要它们的二进制接口是可互换的。

有关更多信息,请参阅https://unix.stackexchange.com/questions/475/how-do-so-shared-object-numbers-work

libc.so.3 在 Linux 中非常不可用。你从哪里得到 libswiftkeysdk-cpp.so 的?

于 2012-09-27T16:46:35.953 回答