Qt 5 の未来は明るいブログ

libQt5Core.so の実行結果のバグを修正しました

Published: 2015-07-11 / Last modified: 2015-07-15

Linux をお使いのみなさん、さっそくですが以下のコマンドを実行してみてください。

$ `qmake -query QT_INSTALL_LIBS`/libQt5Core.so.`qmake -query QT_VERSION`

自分がリンクしている Qt5 の libQt5Core.so がどこにあるかわかっている場合は

$ /path/to/libQt5Core.so

でも同じです。

libQt5Core.so は実行可能です

Qt 4 のいつからか忘れましたが、QtCore ライブラリは実行可能になっています。

これは libQtCore のビルド時に リンカ に-e オプションで qt_core_boilerplate を設定するようになっているからです。

そして実行結果の情報が正しくない

$ ./libQt5Core.so.5.5.1

This is the QtCore library version Qt 5.5.1 (x86_64-little_endian-lp64 shared (dynamic) debug build; by GCC 4.8.4)
Copyright (C) 2015 The Qt Company Ltd.
Contact: http://www.qt.io/licensing/

Build date:          2012-12-20
Installation prefix: /home/tasuku/io/qt/qt/qt5/5.x/xcb/qtbase
Library path:        lib
Include path:        include
Processor features:  sse2[required] sse3 ssse3 sse4.1 sse4.2 avx

「Build date: 2012-12-20」の部分がおかしいですね。

数ヶ月前に「ビルドの日時をバイナリに埋め込むとビルドするごとにバイナリの内容が変わってしまうデメリットの方が大きいからやめない?」という ML での話し合いの結果、Avoid hardcoding build date in qtcore and tools というパッチが取り込まれました。

これによって libQt5Core.so の出力結果からも Build date: が削除されるべきでしたがなぜか見落とされていたので今回修正するパッチを作りました。

パッチを送りました

remove Build date from qt_core_boilerplate() で、実際の修正は該当の2行を消すだけの簡単なものです。

Qt 5.5 ブランチで取り込まれたため、次の Qt 5.5.1 では修正されていると思います。

おまけ

普段使っている環境で試すと libQtCore.so の実行に失敗してしまう問題があり、そちらも 現在修正中 です。修正が終わったら記事にしたいと思います。