一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

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

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

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

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

武漢萬(wàn)象奧科 ? 2023-12-12 14:42 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

QQ截圖20231212142320.jpg

移植ncurses庫(kù)

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

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

tar-zxvfncurses-5.9.tar.gz

2. 解壓后進(jìn)入到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ù)編譯的不同需求進(jìn)行修改
  • --prefix表示編譯完成后生成文件的位置
  • --nable-termcap表示關(guān)鍵代碼使用termcap(terminalcapabilities)數(shù)據(jù)庫(kù)[自動(dòng)檢測(cè)]
  • --with-shared表示動(dòng)態(tài)編譯

5. 編譯

make

當(dāng)遇到如下報(bào)錯(cuò)時(shí)

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

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

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

6. 安裝

Makeinstall

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

移植gdb

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

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

tar-zxvfgdb-7.12.tar.gz

2. 解壓后進(jìn)入到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為交叉編譯器絕對(duì)路徑
  • --enable-shared動(dòng)態(tài)編譯
  • prefix=“$PWD/output/arm-linux”安裝目錄
  • --disable-werror屏蔽werror報(bào)警
  • --without-x取消xwindows支持
  • --disable-gdbtk取消gdbtk
  • --disable-tui取消tui界面
  • --without-included-gettext去掉用于多語(yǔ)言處理的gettext庫(kù)
  • "LDFLAGS=XXX"指交叉編譯完成的ncurse的lib目錄路徑
  • "CPPFLAGS=XXX"指是交叉編譯完成的ncurse的include目錄路徑

4. 編譯

make

5. 安裝

makeinstall

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

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

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

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

T3.JPG

?

測(cè)試調(diào)試

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

#include

intmain(intargc,char*argv[])

{

printf("HelloWorld\n");

return0;

}

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

/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. 使用交叉編譯器編譯測(cè)試程序

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

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

5. 輸入gbd命令啟動(dòng)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)試的測(cè)試程序

(gdb)filehello

Readingsymbolsfromhello...done.

顯示Readingsymbolsfromhello...done.表示被測(cè)程序加載成功

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

(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)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11511

    瀏覽量

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

    關(guān)注

    1

    文章

    1662

    瀏覽量

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

    關(guān)注

    24

    文章

    286

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

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

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

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

    ARM-Linux開發(fā)與MCU開發(fā)有何不同?針對(duì)ARM-Linux程序的開發(fā),主要分為三類:應(yīng)用程序開發(fā)、驅(qū)動(dòng)程序開發(fā)、系統(tǒng)內(nèi)核開發(fā),針對(duì)不同種類的軟件開發(fā),有其不同的特點(diǎn)。今天我們來看
    發(fā)表于 04-02 15:12

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

    ,應(yīng)用開發(fā)則是基于操作系統(tǒng)的,這種方式的嵌入式應(yīng)用開發(fā)與單片機(jī)開發(fā)差異較大。ARM-Linux 應(yīng)用開發(fā)和單片機(jī)的開發(fā)主要有以下幾點(diǎn)不同:(1)應(yīng)用開發(fā)環(huán)境的硬件設(shè)備不同單片機(jī):開發(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)品對(duì)GUI(圖形用戶界面)的需求越來越
    發(fā)表于 12-16 17:46 ?1700次閱讀

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

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

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

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

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

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

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

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

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

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

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

    對(duì)于ARM-Linux開發(fā),通常是沒有硬件的調(diào)試器的,尤其是在應(yīng)用開發(fā)的過程中,很少使用硬件的調(diào)試器,程序的調(diào)試主要是通過串口進(jìn)行調(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)勢(shì)?

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

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

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

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

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