<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

gdb本地調試版本移植至ARM-Linux系統

武漢萬象奧科 ? 2023-12-12 14:42 ? 次閱讀
QQ截圖20231212142320.jpg

移植ncurses庫

本文使用的ncurses版本為ncurses-5.9.tar.gz

1. 將ncurses壓縮包拷貝至Linux主機或使用wget命令下載并解壓

tar-zxvfncurses-5.9.tar.gz

2. 解壓后進入到ncurses-5.9目錄下

cdncurses-5.9

3. 在ncurses-5.9目錄下創建編譯完成后生成文件位置

mkdiroutput

cdoutput

mkdirarm-linux

4. 生成Makefile文件

./configure--target=arm-none-linux-gnueabi--prefix=$PWD/output/arm-linux--enable-termcap--with-shared--without-ada

  • --target表示編譯器的前綴,需要根據編譯的不同需求進行修改
  • --prefix表示編譯完成后生成文件的位置
  • --nable-termcap表示關鍵代碼使用termcap(terminalcapabilities)數據庫[自動檢測]
  • --with-shared表示動態編譯

5. 編譯

make

當遇到如下報錯時

Makefile:794:recipefortarget'../obj_s/lib_gen.o'failed

make[1]:***[../obj_s/lib_gen.o]Error1

make[1]:Leavingdirectory'.../ncurses-5.9/ncurses'

Makefile:109:recipefortarget'all'failed

make:***[all]Error2

需要進入ncurses-5.9/include文件夾,修改curses.tail文件下的如下內容,將注釋/*generated*/去掉

externNCURSES_EXPORT(bool)mouse_trafo(int*,int*,bool);/*generated*/

6. 安裝

Makeinstall

7. 安裝完成后會在/output/arm-linux目錄下生成庫文件,我們只需將lib目錄下的libncurses.so.5庫拷貝至開發板

移植gdb

本文使用的gdb版本為gdb-7.12.tar.gz

1. 將gdb壓縮包拷貝至Linux主機或使用wget命令下載并解壓

tar-zxvfgdb-7.12.tar.gz

2. 解壓后進入到ncurses-5.9目錄下

cdgdb-7.12

3. 生成Makefile文件

./configure-host=arm-none-linux-gnueabiCC=/home/vanxoak/CodeSourcery/Sourcery_G++_Lite/bin/arm-none-linux-gnueabi-gcc--enable-shared--prefix=$PWD/output/arm-linux--disable-werror--without-x--disable-gdbtk--disable-tui--without-included-regex--without-included-gettextLDFLAGS="-L$PWD/../output/arm-linux/lib"CPPFLASS="-I$PWD/../output/arm-linux/include"

  • --host=arm-none-linux-gnueabi用arm-none-linux-gnueabi編譯
  • CC為交叉編譯器絕對路徑
  • --enable-shared動態編譯
  • prefix=“$PWD/output/arm-linux”安裝目錄
  • --disable-werror屏蔽werror報警
  • --without-x取消xwindows支持
  • --disable-gdbtk取消gdbtk
  • --disable-tui取消tui界面
  • --without-included-gettext去掉用于多語言處理的gettext庫
  • "LDFLAGS=XXX"指交叉編譯完成的ncurse的lib目錄路徑
  • "CPPFLAGS=XXX"指是交叉編譯完成的ncurse的include目錄路徑

4. 編譯

make

5. 安裝

makeinstall

安裝完成后會在.../gdb-7.12/output/arm-linux/bin/目錄下生成gdb可執行程序。

移植至HDT3-EVM開發板

1. 將libncurses.so.5庫文件拷貝至/usr/lib目錄下,若/usr目錄下無lib目錄可手動創建mkdirlib

2. 將gdb程序拷貝至/bin目錄下

T3.JPG

?

測試調試

1. 編寫可執行測試程序,示例hello.c代碼如下,該代碼執行后會打印HelloWorld。

#include

intmain(intargc,char*argv[])

{

printf("HelloWorld\n");

return0;

}

2. 使用交叉編譯器進行編譯,需要注意的是,要使用gdb調試程序,需要在使用交叉編譯器編譯源代碼時加上"-g"參數保留調試信息,否則不能使用GDB進行調試且報如下最后一行所示錯誤:

/home#gdbhello

GNUgdb(GDB)7.12

Copyright(C)2016FreeSoftwareFoundation,Inc.

LicenseGPLv3+:GNUGPLversion3orlater

Thisisfreesoftware:youarefreetochangeandredistributeit.

ThereisNOWARRANTY,totheextentpermittedbylaw.Type"showcopying"

and"showwarranty"fordetails.

ThisGDBwasconfiguredas"arm-none-linux-gnueabi".

Type"showconfiguration"forconfigurationdetails.

Forbugreportinginstructions,pleasesee:

.

FindtheGDBmanualandotherdocumentationresourcesonlineat:

.

Forhelp,type"help".

Type"aproposword"tosearchforcommandsrelatedto"word"...

Readingsymbolsfromhello...(nodebuggingsymbolsfound)...done.

3. 使用交叉編譯器編譯測試程序

arm-none-linux-gnueabi-gcc-g-ohellohello.c

4. 將生成的hello文件拷貝至HDT3-EVM開發板上并使用sync命令保存

5. 輸入gbd命令啟動gdb程序

/home#gdb

GNUgdb(GDB)7.12

Copyright(C)2016FreeSoftwareFoundation,Inc.

LicenseGPLv3+:GNUGPLversion3orlater

Thisisfreesoftware:youarefreetochangeandredistributeit.

ThereisNOWARRANTY,totheextentpermittedbylaw.Type"showcopying"

and"showwarranty"fordetails.

ThisGDBwasconfiguredas"arm-none-linux-gnueabi".

Type"showconfiguration"forconfigurationdetails.

Forbugreportinginstructions,pleasesee:

.

FindtheGDBmanualandotherdocumentationresourcesonlineat:

.

Forhelp,type"help".

Type"aproposword"tosearchforcommandsrelatedto"word".

(gdb)

上述代碼(gdb)為GBD內部命令引導符,表示等待用戶輸入gbd命令

6. 使用"filehello"命令載入被調試的測試程序

(gdb)filehello

Readingsymbolsfromhello...done.

顯示Readingsymbolsfromhello...done.表示被測程序加載成功

7. 使用"r"命令執行調試測試程序

(gdb)r

Startingprogram:/home/hello

HelloWorld

[Inferior1(process849)exitednormally]

如上述代碼顯示"HelloWorld"即表示hello程序執行完成

(gdb)help

Listofclassesofcommands:

aliases--Aliasesofothercommands

breakpoints--Makingprogramstopatcertainpoints

data--Examiningdata

files--Specifyingandexaminingfiles

internals--Maintenancecommands

obscure--Obscurefeatures

running--Runningtheprogram

stack--Examiningthestack

status--Statusinquiries

support--Supportfacilities

tracepoints--Tracingofprogramexecutionwithoutstoppingtheprogram

user-defined--User-definedcommands

Type"help"followedbyaclassnameforalistofcommandsinthatclass.

Type"helpall"forthelistofallcommands.

Type"help"followedbycommandnameforfulldocumentation.

Type"aproposword"tosearchforcommandsrelatedto"word".

Commandnameabbreviationsareallowedifunambiguous.


聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • Linux
    +關注

    關注

    87

    文章

    11017

    瀏覽量

    206947
  • 編譯器
    +關注

    關注

    1

    文章

    1579

    瀏覽量

    48711
  • 全志
    +關注

    關注

    24

    文章

    223

    瀏覽量

    52710
收藏 人收藏

    評論

    相關推薦

    使用GDB調試Linux應用程序

    本篇講解使用GDB調試Linux應用程序,以下以 `hellowld.c` 為例介紹 GDB調試入門。
    發表于 06-27 15:48 ?355次閱讀

    ARM-Linux開發與MCU開發有何不同?上篇

    ARM-Linux開發與MCU開發有何不同?針對ARM-Linux程序的開發,主要分為三類:應用程序開發、驅動程序開發、系統內核開發,針對不同種類的軟件開發,有其不同的特點。今天我們來看
    發表于 04-02 15:12

    ARM-Linux與MCU開發的不同之處

    ,應用開發則是基于操作系統的,這種方式的嵌入式應用開發與單片機開發差異較大。ARM-Linux 應用開發和單片機的開發主要有以下幾點不同:(1)應用開發環境的硬件設備不同單片機:開發板,仿真器(調試
    發表于 08-08 10:47

    openssl移植arm-linux全過程相關資料分享

    本文章記錄了將openssl移植arm-linux下的全部過程移植環境編譯環境:Ubuntu18.04-amd64模板環境:i.mx6ul Linux 4.1.15編譯鏈
    發表于 07-01 12:22

    怎樣將openssl移植arm-linux下呢

    怎樣將openssl移植arm-linux下呢?有哪些操作流程?
    發表于 10-22 06:55

    arm-linux平臺的移植適配鼠標滾輪事件

    發給AWTK3.3.2 適配其他嵌入式 Linux 平臺或其他事件一、前言近期嘗試了在嵌入式 Linux 上適配鼠標滾輪事件,其難點主要在于從鼠標驅動文件中獲取滾輪事件,本文做個記錄。注意:本文基于 AWTK 針對 arm-linux
    發表于 12-15 07:49

    什么是ARM-Linux嵌入式操作系統移植呢?

    什么是ARM-Linux嵌入式操作系統移植呢?
    發表于 05-16 10:22

    基于ARM-Linux的MiniGUI的仿真與移植

    基于ARM-Linux的MiniGUI的仿真與移植 近幾年,隨著嵌入式系統的日益發展和32位嵌入式處理器以及圖形顯示設備的廣泛應用,目標產品對GUI(圖形用戶界面)的需求越來越
    發表于 12-16 17:46 ?1407次閱讀

    基于ARM-Linux的1553B仿真測試前端系統

    基于ARM-Linux的1553B仿真測試前端系統
    發表于 01-04 15:31 ?11次下載

    ARM-Linux指紋識別系統的設計

    ARM-Linux指紋識別系統的設計
    發表于 10-31 14:34 ?13次下載
    <b class='flag-5'>ARM-Linux</b>指紋識別<b class='flag-5'>系統</b>的設計

    嵌入式LinuxGDB調試環境建立

    was configured as “--host=i686-pc-linux-gnu,--target=arm-linux”...?說明此gdb在X86的Host上運行,但是調試
    發表于 04-02 14:33 ?424次閱讀

    嵌入式Linux系統GDB遠程調試的實現

    stub是嵌入式系統中的一段代碼,作為宿主機GDB和目標機調試程序間的一個媒介而存在。 就 目前而言,嵌入式Linux系統中,主要有三種遠程
    發表于 04-02 14:38 ?340次閱讀

    ARM-Linux開發與MCU開發有何不同?上篇

    ARM-Linux開發與MCU開發有何不同?上篇針對ARM-Linux程序的開發,主要分為三類:應用程序開發、驅動程序開發、系統內核開發,針對不同種類的軟件開發,有其不同的特點。今天我們來看
    發表于 10-28 19:36 ?6次下載
    <b class='flag-5'>ARM-Linux</b>開發與MCU開發有何不同?上篇

    嵌入式Linux GDB調試環境搭建與使用

    這里寫目錄標題簡介在Ubuntu下簡單體驗GDB嵌入式GDB移植GDB 常用命令參考網絡通信設置注意事項簡介Linux
    發表于 11-01 17:59 ?8次下載
    嵌入式<b class='flag-5'>Linux</b> <b class='flag-5'>GDB</b><b class='flag-5'>調試</b>環境搭建與使用

    如何使用linuxgdb調試python程序

    如何使用linuxgdb調試python程序? 在Linux下,可以使用GDB(GNU調試
    的頭像 發表于 01-31 10:41 ?625次閱讀
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>