Hung-Ming Chen's Blog

星期日, 12月 14, 2014

QTCreator ARM Remote Debugging

1. 編譯 GDB for Qt Creator
下載 Qt Creator source code
  • git clone --recursive https://git.gitorious.org/qt-creator/qt-creator.git
若需要搭配特定版本 Qt Creator, 可以從SourceForget下載壓縮包, 或是 git checkout 切換至特定版本.
直接進入 qt-creator/dist/gdb 目錄, 已經預先定義好 Makefile.linux, Makefile.mingw (windows)與 Makefile.osx 三種 OS 下的 Makefile, 以下皆以 linux 環境做說明.

編譯前先編輯 Makefile.linux, 可以看到支援三種不同的 target codes:
  • targets=x86_64-unknown-linux-gnu i686-unknown-linux-gnu arm-none-linux-gnueabi
我試過 Arch Linux/Ubuntu 上的 gdb 可以直接使用, 所以留下 arm 版本即可 
targets=arm-none-linux-gnueabi
接下來是編譯
  • make -f Makefile.linux
過程中會自動下載 gdb 與 python 的 source code
編譯完成後也會自動打包 qtcreator-gdb-7.8-linux-x86_64.tar.gz
這邊的 linix-x86_64 是 host 的執行環境. 壓縮包解開後的內容為
  • python/
  • gdb-arm-none-linux-gnueabi
將以上檔案搬到適當位置即可

最後是 datadir, gdb-arm-none-linuxeabi 預設的路徑是 /usr/local/share/gdb, 然而 host 環境的檔案卻是在 /usr/share/gdb, 我的作法則是建立 symbolic link
# sudo ln -s /usr/share/gdb /usr/local/share/gdb
如果沒有設定則會導致本地端 gdb 啟動失敗

2. 設定 Qt Creator
如果要進行 arm 平台的 qt remote debugging, host 環境當然就要有對應的 cross compiler 與 arm 版本的 Qt library 與工具. 我使用的是 buildroot 搭配 code sourcery toolchain 產生 root filesystem 與 Qt library, 其中要特別注意的是, 為了佈署執行檔, arm 端還需要支援 ssh server 與 sftp server, 最簡單的作法是 buildroot 中直接加入 openssh

Qt Creator 中的設定包括 compiler, gdb, kit 與 remote device
Options -> Devices
設定 arm 端的 IP address, ssh user name, password/key; Free ports 是給 gdbserver 可以使用的範圍. 設定完成後可以用右方的 'Test' 確認連線設定是否正確

Options -> Build & Run
Compilers -> Add -> GCC, 設定 cross compiler g++ 路徑

Qt Versions, 設定 qmake 路徑

Debuggers, 指向前段自行編譯的 gdb for Qt Creator
Kits
選擇 device , compiler, debugger, 與 Qt version

最後是 arm 端使用的 gdbserver 有兩點要注意, 首先需要支援 '--once' 這個參數, 如果 toolchain 有提供可以直接使用, 或是到回到 qt-creator/dist/gdb 中, 自行手動編譯 gdbserver; 第二點是 Qt Creator 並不會幫你佈署 gdbserver, 要直接放在 arm 的 root filesystem 中, 一般安裝路徑是 /usr/bin/gdbserver, 或者是 ssh 登入後 $PATH 找得到的位置即可


0 個意見:

張貼留言

訂閱 張貼留言 [Atom]



<< 首頁