通過共享文件夾高效調試ARM上Linux的C/C++程序 - ZYNQ7021學習

       這是一篇博客主要講如何使用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跟蹤調試並不好使,這樣進行調試不失爲一個好辦法。不喜勿噴!

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章