Gentoo Linux 上の Qt Creator が Raspberry Pi3 用の gdb を認識してくれなかった
数日前に Qiita に 【令和元年版】Raspberry Pi 3 で Qt 5 をビルドして動かす方法 という記事を書きました。
それを踏まえて Qt Creator で Raspberry Pi3 用のクロスコンパイルの設定をしていたのですが、デバッガの設定がうまくいきませんでした。
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 がデバッガを認識してくれるようになりました。
エラーの場合は結果だけではなくて、ユーザーが何を確認したらいいのかも書いてほしいなぁ。
別の問題が発生
Rasbian 付属の GDB は Python スクリプトに対応していないので Qt Creator では使えないですって。