Qtをソースからビルドしてみたところ、Qtの共有ライブラリが下のような状態になっていて、Qtアプリが起動しませんでした。
root@beaglebone:/tmp# ldd /opt/qt-arm/lib/libQtCore.so
/opt/qt-arm/lib/libQtCore.so: /lib/arm-linux-gnueabihf/libc.so.6: version `GLIBC_2.15' not found (required by /opt/qt-arm/lib/libQtCore.so)
libpthread.so.0 => /lib/arm-linux-gnueabihf/libpthread.so.0 (0xb6c53000)
: : : : :
libgcc_s.so.1 => /lib/arm-linux-gnueabihf/libgcc_s.so.1 (0xb6aff000)
libc.so.6 => /lib/arm-linux-gnueabihf/libc.so.6 (0xb6a19000)
libc.soとしてGLIBC_2.15を要求しているようですが、そういう理解であっていますよね。
一方、そのlibcの方はというと、
root@beaglebone:
# ls -la /lib/arm-linux-gnueabihf/libc.so.6# file /lib/arm-linux-gnueabihf/libc-2.13.so
lrwxrwxrwx 1 root root 12 Feb 22 20:29 /lib/arm-linux-gnueabihf/libc.so.6 -> libc-2.13.so
root@beaglebone:
/lib/arm-linux-gnueabihf/libc-2.13.so: ELF 32-bit LSB shared object, ARM, version 1 (SYSV), dynamically linked (uses shared libs), BuildID[sha1]=0x56ee5330c584ca115f4e3bbc3e6d58ca34c6aea1, for GNU/Linux 2.6.26, stripped
このようにlibc.so.6の実体であるlibc-2.13.soはバージョン2.13のようです。これは現在のディストリビューション(debian)では既に最新となっていて、これ以上新しいのはapt-getできませんでした。
また、GLIBCを勝手に変更するとシステム自体に問題が出ることがあると聞いたので、GLIBCを2.15に上げるのではなく、libQtCore.so.4が要求するバージョンを2.13以下となるようにしたいです。
とりあえずQtが動くようにする暫定パッチを作りたいのですが、どういう仕組みでQtがGLIBC 2.15を要求しているのかが分かりませんでした。GLIBCの特定のバージョンを要求する方法とはどいうものなのでしょうか?ソースコード中のpragmaやコンパイルオプションで指定するものなのでしょうか?Qtのソースツリーを適当なキーワード(_GLIBC_MINOR_など)でgrepしてみたのですが、そういう記述は見つけられませんでした。
識者の方、アドバイスをお願いします。
ちなみに、Qtソースは4.8.6で、開発ホスト=x86-Ubuntu/ターゲット=arm-linuxでクロスコンパイルしています。

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2015/05/29 00:10
2015/05/29 00:31
退会済みユーザー
2015/05/29 01:50