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 に答える