九色国产,午夜在线视频,新黄色网址,九九色综合,天天做夜夜做久久做狠狠,天天躁夜夜躁狠狠躁2021a,久久不卡一区二区三区

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
編譯GDB(主要針對LINUX平臺)

編譯GDB(主要針對LINUX平臺)

 

1. 取得源碼

通常人們選擇release的版本,可以直接到http://www.gnu.org/software/gdb/download/,這里介紹了各種下載地址,建議下載最新版本。

當(dāng)然我個人更推薦使用trunk,BUG這里最早修復(fù),新功能這里最早會有,只是很偶爾會有編譯出錯的情況(今年我好像還沒碰見過),大約過個1天也會有人修復(fù)。唯一的缺點是你需要經(jīng)常更新你的GDB代碼并編譯安裝他們,當(dāng)然這其實也花不了多少時間。
取得trunk也可以通過下載的方式,ftp://sourceware.org/pub/gdb/snapshots/current/gdb.tar.bz2就是當(dāng)前GDB的源碼。
當(dāng)然如果經(jīng)常更新的話,每次都下載十幾M的源碼包肯定比較麻煩,這時候最好就能用到版本控制工具來取得代碼。GDB官方的版本控制使用的CVS,你可以用:
cvs -z9 -d :pserver:anoncvs@sourceware.org:/cvs/src co gdb
取得最新的GDB代碼,而在取得源碼用目錄中用:
cvs update
就可以更新源碼。
GDB也提供了GIT鏡像:
git clone git://sourceware.org/git/gdb.git
取得最新的GDB代碼,而在取得源碼用目錄中用:
git pull
就可以更新源碼。

2.基本編譯

編譯之前請安裝texinfo,libncurses5-dev, m4, flex 和 bison這5個包。
最基本的GDB編譯非常簡單,和編譯大部分軟件一樣。
創(chuàng)建一個用來編譯GDB的目錄:
mkdir bgdb
進入這個目錄:
cd bgdb
config,其中../gdb/是GDB源碼的目錄:
../gdb/configure
然后就是編譯:
make
編譯后安裝:
make install
其中比較關(guān)鍵的地方就是config,其決定了后面編譯出什么樣的GDB。

如果想設(shè)置編譯好的GDB到一個指定目錄,可以用:
../gdb/configure –prefix=$HOME
使用這個configure,可以讓GDB安裝到當(dāng)前用戶的home目錄。

也可以在編譯的時候指定CFLAGS,可以用:
../gdb/configure CFLAGS=-g
使用這個configure,編譯出的GDB沒有打開O2選項。

3.編譯支持其他體系結(jié)構(gòu)的GDB

前面介紹的config方式都是編譯當(dāng)前體系結(jié)構(gòu)的,有時候我們需要在本機(X86)上跑一個支持別的體系結(jié)構(gòu)的GDB,這樣可以分析那個平臺的二進制文件,CORE文件以及對那個平臺的的程序進行遠(yuǎn)程調(diào)試??梢赃@樣用:
../gdb/configure –target=amd64-linux
這樣編譯出的GDB就可以支持AMD64的GDB,編譯安裝的時候,GDB的執(zhí)行文件會被命名為amd64-linux-gdb。

但是這樣編譯會有個小問題,如果需要使用多個體系結(jié)構(gòu)的GDB,則需要每個平臺都編譯一個GDB,這有點麻煩,所以我比較喜歡使用的是另一種方法配置:
../gdb/configure –enable-targets=all –enable-64-bit-bfd
這樣的GDB可以直接支持了全部他可以支持的體系結(jié)構(gòu)和文件結(jié)構(gòu)。
其中–enable-targets=all是讓GDB打開對所有體系結(jié)構(gòu)支持。
而–enable-64-bit-bfd是設(shè)置bfd為64位模式,這樣才能支持64位的二進制文件比如說amd64,不過比較新的bfd中,當(dāng)設(shè)置的target是64位或者打開–enable-targets=all的時候,不需要設(shè)置會自動打開這個選項,不過保險起見還是打開。
這樣編譯出的GDB就能支持GDB支持的全部體系結(jié)構(gòu)了。
當(dāng)然用起來有個問題就是,因為支持的體系結(jié)構(gòu)太多,可能有一些二進制文件會同時符合若干種格式,打開這類文件的時候GDB會顯示:
“xxx”: not in executable format: File format is ambiguous.
Matching formats: elf32-bigmips elf32-bigmips-vxworks elf32-tradbigmips.
Use “set gnutarget format-name” to specify the format.
這時你就可以根據(jù)提示,用set gnutarget format-name從列表中選擇正確的格式,然后再用file命令打開這個文件,就可以了。

4.交叉編譯

如果想在本地編譯一個GDB而要在其他體系結(jié)構(gòu)的平臺上下使用,首先需要本地交叉編譯環(huán)境可用,可以編譯出可以在目標(biāo)平臺上運行的可執(zhí)行文件,然后:
../src/configure –host=mips64-linux –enable-64-bit-bfd
CC=mips64-linux-gcc LD=mips64-linux-ld AR=mips64-linux-ar
這樣GDB就能編譯出一個可以在mips64-linux上使用的GDB。

5.cvs update -d

前面提過更新CVS目錄,要使用cvs update,而cvs update
-d是不建議使用的命令,因為當(dāng)增加-d選項的時候,cvs會把源碼倉庫中所有文件都取回來,完成后src目錄中不光有原來的目錄,還增加了binutils,tk,
ld 等一大堆其他軟件的目錄。
如果你希望同時使用sourceware里面這些軟件的最新版本,你可以使用這個源碼樹,如果你不想使用這樣的源碼樹,則請直接看下一節(jié)。
我對這個目錄建議的配置是:
../gdb/configure –disable-sid –disable-rda –disable-gdbtk
–enable-targets=all –enable-64-bit-bfd
其中–enable-targets=all –enable-64-bit-bfd上一節(jié)已經(jīng)介紹過,不再介紹。
–disable-sid –disable-rda禁止了2個不太常用且編譯比較慢的軟件。
–disable-gdbtk禁止了GDB圖形擴展insight的編譯,其實這個軟件還是相當(dāng)好用的,

這個圖形擴展可以同時打開命令行,看源碼的時候還能隨時切換成匯編。但其有一個問題

是跟GDB源碼的聯(lián)系其實非常緊密,一旦GDB一些源碼作了更新,其的編譯就會受到影響,

再加上維護者不多,所以一旦編譯不過就需要等上幾天,這種情況一年能碰上幾次,幾率也

不算很高。當(dāng)然如果不介意的話,可以在config的時候去掉–disable-gdbtk,

并安裝包libx11-dev,編譯如果發(fā)現(xiàn)問題可以報到郵件列表insight@sourceware.org,

這樣開發(fā)者可以更快的修復(fù)問題。

6.寫在最后

前面介紹過的config參數(shù)可以同時使用,大家可根據(jù)需要靈活組合。

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
【原創(chuàng)】Android Linux內(nèi)核編譯調(diào)試
ffmpeg移植
手工制作最新版arm-linux交叉工具鏈(ubuntu 9.04)
在阿里云搭建自己的ngrok服務(wù)
編譯Linux內(nèi)核
cool! 用sourcesight實現(xiàn)內(nèi)核源碼級調(diào)試
更多類似文章 >>
生活服務(wù)
熱點新聞
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服