1. 程式人生 > >通過共享資料夾高效除錯ARM上Linux的C/C++程式

通過共享資料夾高效除錯ARM上Linux的C/C++程式

       這是一篇部落格主要講如何使用windows和Ubuntu虛擬機器聯合高效除錯ARM上linux的C/C++專案,是在做ARM上linux的C/C++應用程式開發的小總結。

開發環境

系統:
       Windows 10 Pro 64位
       Ubuntu 16.04 64位

軟體:
       Microsoft Visual Studio 2010

問題描述

       當進行稍微大型一點的ARM上的linux的C/C++專案開發時,用慣了windows下的函式跳轉等功能,到了linux開發環境,在除錯程式碼和程式碼維護時感覺非常的不適應。在這裡,分享一下使用windows和Ubuntu虛擬機器聯合高效除錯ARM上linux的C/C++專案的開發經驗。

解決方案

       首先,這個方法開發方式需要在windows下安裝VS(其他IDE沒嘗試過)、搭建Win10與Ubuntu虛擬機器的共享資料夾,在Ubuntu虛擬機器中安裝NFS檔案系統。在windows下可以像編寫windows的程式碼一樣編寫,儲存以後直接跳轉到Ubuntu內進行交叉編譯。對於有許多原始檔的專案的維護來說,這就是一個極大的福利,終於不用在一個檔案一個檔案的去使用Find功能查詢某一個函式的具體實現了。不要在windows下嘗試編譯,因為linux的庫和windows的有些庫是不一樣的,編譯一般不會通過。

第一步

       在VS中新建一個工程,將工程的路徑選擇為windows和Ubuntu的共享資料夾,將*.c原始檔和*.h標頭檔案新增到工程中或者或者自己建立原始檔,新增工程完成之後,VS就能在不需要編譯的情況下,實現函式跳轉的功能。

第二步

       切換到Ubuntu系統,進入到共享資料夾中,新增一個shell指令碼檔案compile.sh,compile.sh主要實現的功能為設定編譯環境、呼叫ARM的G++/GCC編譯器對*.cpp或者*.c進行交叉編譯、將編譯後的可執行檔案拷貝到NFS共享資料夾下。在這個目錄下開啟終端,輸入“./compile.sh”就能完成compile.sh中的一系列繁瑣指令的功能,使用指令碼編譯這個方法非常的便利。若指令碼為compile,沒有.sh字尾時,如果執行“./compile”時提示“沒有執行許可權”時,使用“chmod 777 compile ”賦予compile可執行許可權即可。compile.sh內容如下

source /opt/Xilinx/SDK/2015.4/settings64.sh
arm-xilinx-linux-gnueabi-g++ *.c -o run.out -static
cp run.out /home/wqihong/work/nfs_server/

註釋:

   第一行:設定交叉編譯環境
   第二行:靜態編譯所有的“.c”檔案
   第三行:將編譯輸出的可執行檔案拷貝到NFS掛載的資料夾下。

第三步

       完成了上面的兩步,在開發板的/mnt資料夾下就可以看到最新的可執行檔案了,在開發板的控制檯上輸入指令“./run.out”就可以執行可執行檔案了(run.out是可執行檔案的名字)。

       在進行Linux多執行緒開發時,GDB跟蹤除錯並不好使,這樣進行除錯不失為一個好辦法。不喜勿噴!