91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

gdb本地調(diào)試版本移植至ARM-Linux系統(tǒng)

武漢萬象奧科 ? 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目錄下創(chuàng)建編譯完成后生成文件位置

mkdiroutput

cdoutput

mkdirarm-linux

4. 生成Makefile文件

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

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

5. 編譯

make

當(dāng)遇到如下報錯時

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文件下的如下內(nèi)容,將注釋/*generated*/去掉

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

6. 安裝

Makeinstall

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

移植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動態(tài)編譯
  • 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可執(zhí)行程序。

移植至HDT3-EVM開發(fā)板

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

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

T3.JPG

?

測試調(diào)試

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

#include

intmain(intargc,char*argv[])

{

printf("HelloWorld\n");

return0;

}

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

/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開發(fā)板上并使用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內(nèi)部命令引導(dǎo)符,表示等待用戶輸入gbd命令

6. 使用"filehello"命令載入被調(diào)試的測試程序

(gdb)filehello

Readingsymbolsfromhello...done.

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

7. 使用"r"命令執(zhí)行調(diào)試測試程序

(gdb)r

Startingprogram:/home/hello

HelloWorld

[Inferior1(process849)exitednormally]

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

(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.


聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • Linux
    +關(guān)注

    關(guān)注

    88

    文章

    11763

    瀏覽量

    219084
  • 編譯器
    +關(guān)注

    關(guān)注

    1

    文章

    1672

    瀏覽量

    51649
  • 全志
    +關(guān)注

    關(guān)注

    25

    文章

    312

    瀏覽量

    54746
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    使用GDB調(diào)試Linux應(yīng)用程序

    本篇講解使用GDB調(diào)試Linux應(yīng)用程序,以下以 `hellowld.c` 為例介紹 GDB調(diào)試入門。
    發(fā)表于 06-27 15:48 ?833次閱讀

    ARM-Linux與MCU開發(fā)的不同之處

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

    怎樣將openssl移植arm-linux下呢

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

    什么是ARM-Linux嵌入式操作系統(tǒng)移植呢?

    什么是ARM-Linux嵌入式操作系統(tǒng)移植呢?
    發(fā)表于 05-16 10:22

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

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

    基于ARM-Linux的1553B仿真測試前端系統(tǒng)

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

    ARM-Linux指紋識別系統(tǒng)的設(shè)計

    ARM-Linux指紋識別系統(tǒng)的設(shè)計
    發(fā)表于 10-31 14:34 ?13次下載
    <b class='flag-5'>ARM-Linux</b>指紋識別<b class='flag-5'>系統(tǒng)</b>的設(shè)計

    嵌入式LinuxGDB調(diào)試環(huán)境建立

    was configured as “--h(huán)ost=i686-pc-linux-gnu,--target=arm-linux”...?說明此gdb在X86的Host上運行,但是調(diào)試
    發(fā)表于 04-02 14:33 ?1315次閱讀

    嵌入式Linux系統(tǒng)GDB遠程調(diào)試的實現(xiàn)

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

    ARM-Linux開發(fā)與MCU開發(fā)有何不同?上篇

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

    ARM-Linux開發(fā)與MCU開發(fā)比較

    對于ARM-Linux開發(fā),通常是沒有硬件的調(diào)試器的,尤其是在應(yīng)用開發(fā)的過程中,很少使用硬件的調(diào)試器,程序的調(diào)試主要是通過串口進行調(diào)試的。
    發(fā)表于 02-08 16:41 ?1次下載
    <b class='flag-5'>ARM-Linux</b>開發(fā)與MCU開發(fā)比較

    ARM-Linux開發(fā)與MCU開發(fā)的各自優(yōu)勢?

    針對ARM-Linux程序的開發(fā),主要分為三類:應(yīng)用程序開發(fā)、驅(qū)動程序開發(fā)、系統(tǒng)內(nèi)核開發(fā),針對不同種類的軟件開發(fā),有其不同的特點。今天我們來看看ARM-Linux開發(fā)和MCU開發(fā)的不同點,以及
    發(fā)表于 02-10 09:36 ?0次下載
    <b class='flag-5'>ARM-Linux</b>開發(fā)與MCU開發(fā)的各自優(yōu)勢?

    ARM-Linux開發(fā)和MCU開發(fā)的不同點

    針對ARM-Linux程序的開發(fā),主要分為三類:應(yīng)用程序開發(fā)、驅(qū)動程序開發(fā)、系統(tǒng)內(nèi)核開發(fā)。針對不同種類的軟件開發(fā),有其不同的特點。 今天,我們來看看ARM-Linux開發(fā)和MCU開發(fā)的不同點,以及
    的頭像 發(fā)表于 06-22 11:46 ?1577次閱讀

    基于ARM-Linux指紋識別系統(tǒng)的設(shè)計

    電子發(fā)燒友網(wǎng)站提供《基于ARM-Linux指紋識別系統(tǒng)的設(shè)計.pdf》資料免費下載
    發(fā)表于 10-23 10:12 ?0次下載
    基于<b class='flag-5'>ARM-Linux</b>指紋識別<b class='flag-5'>系統(tǒng)</b>的設(shè)計

    如何使用linuxgdb調(diào)試python程序

    如何使用linuxgdb調(diào)試python程序? 在Linux下,可以使用GDB(GNU調(diào)試
    的頭像 發(fā)表于 01-31 10:41 ?3955次閱讀