Gentoo Linux 上の Qt Creator が Raspberry Pi3 用の gdb を認識してくれなかった

数日前に Qiita に 【令和元年版】Raspberry Pi 3 で Qt 5 をビルドして動かす方法 という記事を書きました。

それを踏まえて Qt Creator で Raspberry Pi3 用のクロスコンパイルの設定をしていたのですが、デバッガの設定がうまくいきませんでした。

Could not determine debugger type

Qt(qmake)やコンパイラ(GCC/G++)の設定は問題ないのにデバッガだけ様子がおかしいので、Qt Creator の怪しいバグかな?と思ったのですが、ホスト環境(Gentoo Linux amd64)側の問題でした。

$ ~/com/github/raspberrypi/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin/arm-linux-gnueabihf-gdb
/home/tasuku/com/github/raspberrypi/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin/arm-linux-gnueabihf-gdb: error while loading shared libraries: libncurses.so.5: cannot open shared object file: No such file or directory
$ ldd ~/com/github/raspberrypi/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin/arm-linux-gnueabihf-gdb
        libdl.so.2 => /lib32/libdl.so.2 (0xf7f2b000)
        libncurses.so.5 => not found
        libz.so.1 => not found
        libm.so.6 => /lib32/libm.so.6 (0xf7e61000)
        libpthread.so.0 => /lib32/libpthread.so.0 (0xf7e40000)
        libc.so.6 => /lib32/libc.so.6 (0xf7c5b000)
        /lib/ld-linux.so.2 (0xf7f69000)

うちの環境だと ncurses は 6 が入ってるけど 5 は入ってないっぽい。

あと、32bit 用のライブラリが必要っぽい。

$ sudo vi /etc/portage/package.use/abi_x86_32
sys-libs/zlib abi_x86_32
sys-libs/ncurses:5 abi_x86_32 -gpm
$ sudo emerge -avt1 zlib ncurses:5
...
$ ldd ~/com/github/raspberrypi/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin/arm-linux-gnueabihf-gdb
         libdl.so.2 => /lib32/libdl.so.2 (0xf7f26000)
         libncurses.so.5 => /usr/lib32/libncurses.so.5 (0xf7ee3000)
         libz.so.1 => /usr/lib32/libz.so.1 (0xf7eca000)
         libm.so.6 => /lib32/libm.so.6 (0xf7e00000)
         libpthread.so.0 => /lib32/libpthread.so.0 (0xf7ddf000)
         libc.so.6 => /lib32/libc.so.6 (0xf7bfa000)
         /lib/ld-linux.so.2 (0xf7f65000)

というわけで、これで無事 Qt Creator がデバッガを認識してくれるようになりました。

エラーの場合は結果だけではなくて、ユーザーが何を確認したらいいのかも書いてほしいなぁ。

別の問題が発生

GDB does not support Python scripting.

Rasbian 付属の GDB は Python スクリプトに対応していないので Qt Creator では使えないですって。