Linux GNU C 程序觀察 版權(quán)信息
- ISBN:9787302545491
- 條形碼:9787302545491 ; 978-7-302-54549-1
- 裝幀:平裝-膠訂
- 冊數(shù):暫無
- 重量:暫無
- 所屬分類:>>
Linux GNU C 程序觀察 本書特色
本書所討論的內(nèi)容是“C語言程序設(shè)計(jì)”類課程的后續(xù)知識,涉及C程序在Linux環(huán)境下經(jīng)過GCC編譯/鏈接生成可執(zhí)行文件以及在系統(tǒng)中運(yùn)行的問題。本書能使讀者在面對C程序的工程實(shí)踐問題時(shí),做到心中有數(shù)、處處不存疑。 全書共7章,第1章介紹環(huán)境準(zhǔn)備,第2章介紹C程序的預(yù)處理、編譯、匯編和鏈接的全過程,并介紹了一點(diǎn)關(guān)于GCC編譯命令及編譯選項(xiàng)、GDB調(diào)試初步概念,第3章專注于編譯環(huán)節(jié),即從C到匯編的轉(zhuǎn)換,第4章專注于鏈接過程,第5章介紹可執(zhí)行文件在系統(tǒng)中運(yùn)行時(shí),觀察進(jìn)程與系統(tǒng)的關(guān)系、進(jìn)程對庫的調(diào)用、程序異常行為等問題,第6、7章介紹一些性能剖析方法,包括GCC自帶工具、庫函數(shù)打樁方法、valgrind及perf工具的簡單使用等,第8章介紹一個(gè)綜合性的實(shí)例,即如何將HDFS文件系統(tǒng)使用的gzip壓縮,從利用zlib庫在CPU上計(jì)算轉(zhuǎn)換成利用FPGA加速卡的過程。該實(shí)例涉及庫的使用和修改、makefile以及相應(yīng)的C程序?qū)崿F(xiàn)等多方面知識,讓讀者從一個(gè)工程需求的角度考察其方案與實(shí)現(xiàn)。每章后面都有一些練習(xí)題,其中有一個(gè)與zlib庫相關(guān)的任務(wù)貫穿了各章,讀者通過這個(gè)連貫的練習(xí)將各章知識融會(huì)貫通。 本書可以作為計(jì)算機(jī)及相關(guān)專業(yè)高年級本科生或研究生學(xué)習(xí)Linux環(huán)境下的C程序設(shè)計(jì)教學(xué)用書,對希望深入了解Linux內(nèi)核的讀者和相關(guān)開發(fā)人員也非常有參考價(jià)值。
Linux GNU C 程序觀察 內(nèi)容簡介
本書所討論的內(nèi)容是“C語言程序設(shè)計(jì)”類課程的后續(xù)知識,涉及C程序在Linux環(huán)境下經(jīng)過GCC編譯/鏈接生成可執(zhí)行文件以及在系統(tǒng)中運(yùn)行的問題。本書能使讀者在面對C程序的工程實(shí)踐問題時(shí),做到心中有數(shù)、處處不存疑。 全書共7章,章介紹環(huán)境準(zhǔn)備,第2章介紹C程序的預(yù)處理、編譯、匯編和鏈接的全過程,并介紹了一點(diǎn)關(guān)于GCC編譯命令及編譯選項(xiàng)、GDB調(diào)試初步概念,第3章專注于編譯環(huán)節(jié),即從C到匯編的轉(zhuǎn)換,第4章專注于鏈接過程,第5章介紹可執(zhí)行文件在系統(tǒng)中運(yùn)行時(shí),觀察進(jìn)程與系統(tǒng)的關(guān)系、進(jìn)程對庫的調(diào)用、程序異常行為等問題,第6、7章介紹一些性能剖析方法,包括GCC自帶工具、庫函數(shù)打樁方法、valgrind及perf工具的簡單使用等,第8章介紹一個(gè)綜合性的實(shí)例,即如何將HDFS文件系統(tǒng)使用的gzip壓縮,從利用zlib庫在CPU上計(jì)算轉(zhuǎn)換成利用FPGA加速卡的過程。該實(shí)例涉及庫的使用和修改、makefile以及相應(yīng)的C程序?qū)崿F(xiàn)等多方面知識,讓讀者從一個(gè)工程需求的角度考察其方案與實(shí)現(xiàn)。每章后面都有一些練習(xí)題,其中有一個(gè)與zlib庫相關(guān)的任務(wù)貫穿了各章,讀者通過這個(gè)連貫的練習(xí)將各章知識融會(huì)貫通。 本書可以作為計(jì)算機(jī)及相關(guān)專業(yè)高年級本科生或研究生學(xué)習(xí)Linux環(huán)境下的C程序設(shè)計(jì)教學(xué)用書,對希望深入了解Linux內(nèi)核的讀者和相關(guān)開發(fā)人員也很好有參考價(jià)值。
Linux GNU C 程序觀察 目錄
第1章實(shí)驗(yàn)環(huán)境構(gòu)建1
1.1安裝Linux1
1.1.1下載CentOS71
1.1.2CentOS7安裝2
1.2虛擬機(jī)安裝Linux9
1.2.1VirtualBox安裝9
1.2.2虛擬機(jī)配置13
1.2.3虛擬機(jī)安裝Linux20
1.3ssh遠(yuǎn)程終端訪問20
1.3.1PuTTY客戶端21
1.3.2無密碼登錄24
1.3.3Xming圖形終端26
1.4初次接觸Linux28
1.4.1簡單操作28
1.4.2運(yùn)行HelloWorld程序33
1.5小結(jié)37 第2章程序編譯與運(yùn)行38
2.1編譯的各階段39
2.1.1源代碼39
2.1.2預(yù)處理40
2.1.3編譯44
2.1.4匯編46
2.1.5鏈接48
2.1.6GCC編譯驅(qū)動(dòng)49
2.2GCC基本用法51
2.2.1C語言標(biāo)準(zhǔn)53
2.2.2庫的使用54
2.2.3搜索路徑60
2.2.4編譯警告65
2.3GDB調(diào)試70
2.3.1代碼準(zhǔn)備71
2.3.2運(yùn)行代碼73
2.3.3查看變量和內(nèi)存77
2.3.4圖形前端TUI83
2.4小結(jié)84
練習(xí)84
Linux GNU C程序觀察目錄
第3章數(shù)據(jù)、運(yùn)算與控制86
3.1x8664 ISA86
3.1.1寄存器86
3.1.2內(nèi)存空間與I/O空間91
3.2數(shù)據(jù)92
3.2.1數(shù)據(jù)大小、字節(jié)序92
3.2.2數(shù)組、結(jié)構(gòu)體和聯(lián)合體95
3.2.3數(shù)據(jù)布局98
3.3運(yùn)算102
3.3.1數(shù)據(jù)傳送102
3.3.2算術(shù)/邏輯運(yùn)算104
3.3.3加載有效地址106
3.4控制107
3.4.1條件跳轉(zhuǎn)107
3.4.2函數(shù)調(diào)用127
3.5小結(jié)159
練習(xí)159 第4章鏈接與可執(zhí)行文件161
4.1生成可執(zhí)行文件161
4.1.1樣例代碼162
4.1.2進(jìn)程影像164
4.1.3ELF文件與裝入168
4.2可重定位目標(biāo)文件182
4.2.1目標(biāo)文件的節(jié)(section)183
4.2.2符號及重定位187
4.2.3符號表196
4.3靜態(tài)鏈接200
4.3.1布局200
4.3.2符號解析205
4.3.3靜態(tài)重定位207
4.4動(dòng)態(tài)鏈接214
4.4.1樣例代碼215
4.4.2動(dòng)態(tài)鏈接庫216
4.4.3動(dòng)態(tài)鏈接步驟230
4.5小結(jié)250
練習(xí)251 第5章鏈接腳本與makefile252
5.1二進(jìn)制工具和鏈接腳本252
5.1.1binutils252
5.1.2鏈接器腳本254
5.2makefile267
5.2.1makefile基本格式267
5.2.2makefile規(guī)則270
5.2.3makefile變量274
5.2.4文件指示277
5.2.5函數(shù)279
5.2.6make281
5.3小結(jié)282
練習(xí)283 第6章程序運(yùn)行284
6.1裝入與運(yùn)行284
6.1.1ELF裝載器284
6.1.2內(nèi)核代碼285
6.1.3進(jìn)程與線程285
6.1.4工作環(huán)境287
6.2基本行為觀察289
6.2.1ptrace289
6.2.2strace295
6.2.3GDB斷點(diǎn)原理300
6.2.4ltrace301
6.3異常行為304
6.3.1非法操作304
6.3.2響應(yīng)信號309
6.3.3core文件315
6.4小結(jié)325
練習(xí)326 第7章性能剖析327
7.1打樁方法327
7.1.1源代碼預(yù)處理時(shí)328
7.1.2靜態(tài)鏈接時(shí)330
7.1.3運(yùn)行加載時(shí)332
7.2gprof334
7.2.1工作原理335
7.2.2gprof示例335
7.2.3性能數(shù)據(jù)解讀343
7.2.4圖形化顯示(gprof2dot.py graphviz)348
7.3gcov349
7.3.1基于函數(shù)分析的缺點(diǎn)349
7.3.2gcov逐行分析351
7.4其他分析工具355
7.4.1Valgrind355
7.4.2perf368
7.5小結(jié)375
練習(xí)376 第8章綜合實(shí)例: HDFS中實(shí)現(xiàn)zlib庫的旁路377
8.1項(xiàng)目需求377
8.2系統(tǒng)分析378
8.2.1整體方案378
8.2.2Haddop的gzip JNI379
8.2.3zlib分析382
8.2.4測定z_stream成員大小385
8.3編碼實(shí)現(xiàn)387
8.3.1zlib日志387
8.3.2Log4c388
8.3.3使用libcprss.so庫396
8.4功能驗(yàn)證398
8.4.1準(zhǔn)備輸入文件399
8.4.2zlib原生庫的壓縮399
8.4.3libcprss.so庫的壓縮401
8.5小結(jié)401 附錄402
Linux GNU C 程序觀察 作者簡介
深圳大學(xué)計(jì)算機(jī)與軟件學(xué)院副教授,廣東省國產(chǎn)高性能計(jì)算系統(tǒng)工程技術(shù)研究中心副主任、深圳市服務(wù)計(jì)算與應(yīng)用重點(diǎn)實(shí)驗(yàn)室常務(wù)副主任,長期從事高性能計(jì)算研究。華中科技大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)博士學(xué)位。著《OpenMP編譯原理及實(shí)現(xiàn)技術(shù)》《Linux技術(shù)內(nèi)幕》《操作系統(tǒng)之編程觀察》譯《Intel Parallel Studio環(huán)境下的并行程序設(shè)計(jì)》。發(fā)表論文40多篇(含SCI/EI索引多篇),承擔(dān)和參與國家、省、市科研項(xiàng)目多項(xiàng),2009-2010年參與基于龍芯3多核處理器的萬億次個(gè)人高性能計(jì)算機(jī)KD-60研制2011~2012年參與基于龍芯3號8核處理器的普及型高性能計(jì)算機(jī)KD-90研制,上述成果通過安徽省科技廳鑒定。2004-今,深圳大學(xué)計(jì)算機(jī)與軟件學(xué)院從事科研與教學(xué)工作,本科及研究生課程:《操作系統(tǒng)》《現(xiàn)代操作系統(tǒng)》《操作系統(tǒng)課程設(shè)計(jì)》《計(jì)算機(jī)體系結(jié)構(gòu)》《Intel并行編程工具》等。
- >
有舍有得是人生
- >
回憶愛瑪儂
- >
小考拉的故事-套裝共3冊
- >
巴金-再思錄
- >
我從未如此眷戀人間
- >
中國歷史的瞬間
- >
我與地壇
- >
新文學(xué)天穹兩巨星--魯迅與胡適/紅燭學(xué)術(shù)叢書(紅燭學(xué)術(shù)叢書)