11/22/2016

[note] Launchyのビルド失敗への対処について(on ubuntu16.10)

ubuntu(lubuntu)上のランチャーとして、もう何年もバージョンが2.5のままでアップデートも長らくされていないLaunchyをなんとなく使い続けているのですけれども。先日、新規にlubuntu16.10の64bit版を導入する機会があり、いつものようにセットアップ作業を行っていたところ、Launchyのビルドに失敗したのです。

結構長い間新規のビルドはしていなかったので、本件失敗が何時何が原因で発生するようになったのかは不明ですが、少なくとも2年前位までは問題なかった筈ですし、おそらくはライブラリ類の変更に伴う些細な問題とかその辺だろうと推測し、調査の上対処することにしました。

まず、ビルド中に発生したエラーは、下記の通りリンカにおける未定義参照すなわちライブラリの参照失敗でした。

[ビルドエラー]
/usr/bin/ld: build/platform_x11_hotkey.o: シンボル 'XKeycodeToKeysym' への未定義参照です

これを見た時、少し首を傾げてしまいました。というのも、問題の関数XKeycodeToKeysymはDeprecatedになっていて後継の関数への置き換えが可能ではあるものの、使えないわけではなかった筈です。実際、後継関数のXkbKeycodeToKeysymに置き換えてみると、上記エラーは消えたものの、別の、Deprecatedになっていない関数の未定義エラーが発生しました。というわけで、本件は個別の関数の問題ではなく、X11関連のライブラリへの参照一般に失敗している事が原因だろうと理解し、Makefile中のg++のリンカオプションに-lX11を追加したところ、無事ビルドに成功。なお前記関数の置き換えは元に戻しましたが、やはり問題なくビルド出来ます。というわけで割とあっさり解決して一安心です。

具体的な修正点は下記の通りとなります。Launchyのソースのバージョンは2.5。
[修正ファイル] src/Makefile.Release
 ※本ファイルは、正規のビルド手順の途中でqmakeにより自動生成されるものです。
[修正点]
 LIBS変数(18行目あたり)の中に、-lX11を追加挿入
 (修正例)
 LIBS = $(SUBLIBS) -L/usr/lib/x86_64-linux-gnu -lX11 -lQtGui -lQtNetwork -lQtCore -lpthread

なお、本件とは関係ありませんが、以前行ったアイコン処理関連で落ちる現象の修正(下記)は適用済みです。
[note] Launchyが落ちるので暫定修正

というわけで今回は以上です。