《程式設計師的自我修養:連結、裝載與庫》主要介紹系統軟體的運行機制和原理,涉及在Windows和Linux兩個系統平台上,一個應用程式在編譯、連結和運行時刻所發生的各種事項,包括:代碼指令是如何保存的,庫檔案如何與應用程式代碼靜態連結,應用程式如何被裝載到記憶體中並開始運行,動態連結如何實現,C/C++運行庫的工作原理,以及作業系統提供的系統服務是如何被調用的。每個技術專題都配備了大量圖、表和代碼實例,力求將複雜的機制以簡潔的形式表達出來。本書最後還提供了一個小巧且跨平台的C/C++運行庫MiniCRT,綜合展示了與運行庫相關的各種技術。
基本介紹
- 書名:程式設計師的自我修養:連結、裝載與庫
- ISBN:9787121085116
- 頁數:459頁
- 出版社:電子工業出版社
- 出版時間:2009年5月1日
- 裝幀:平裝
- 開本:16
內容簡介,媒體評論,目錄,
內容簡介
《程式設計師的自我修養:連結、裝載與庫》對裝載、連結和庫進行了深入淺出的剖析,並且輔以大量的例子和圖表,可以作為計算機軟體專業和其他相關專業大學本科高年級學生深入學習系統軟體的參考書。同時,還可作為各行業從事軟體開發的工程師、研究人員以及其他對系統軟體實現機制和技術感興趣者的自學教材。
媒體評論
這是一本深人闡述連結、裝載和庫等問題的優秀圖書,讀來讓人愉悅,你從中可以清晰地了解程式的前世今生,徹底理解敲人的代碼如何變成程式任系統中運行。通讀本書不管對於開發還是trouble shootin9都會很有幫助。建議每一位希望從事系統開發、或希望更實務地理解作業系統和編譯器、或不滿足於只寫代碼的優秀程式設計師都擁有這樣一本書。
——鄒飛,趨勢科技(中國)研發中心資深軟體要程師
本書從大處著眼,小處著手,以通俗易懂的語言,深入淺出地對系統軟體的底層形成機制進行條分縷析,正合藥山禪師所謂“高高山頂立,深深海底行”。循著作者的思緒一路走來,有如醍醐灌頂。暢快淋漓。非常高興有預覽此書初稿的寶貴機會,我在瀏覽書稿和查核相關資料的過程中,學到了很多以前未知或知之不深的內容。
——馮亮,阿里巴巴(中國)網路技術有限公司運維部系統架構師
目錄
第1部分 簡介
第1章 溫故而知新
1.1 從HELLO WORLD 說起
1.2 萬變不離其宗
1.3 站得高,望得遠
1.4 作業系統做什麼
1.5 記憶體不夠怎么辦
1.6 眾人拾柴火焰高
1.7 本章小結
第2部分 靜態連結
第2章 編譯和連結
2.1 被隱藏了的過程
2.2 編譯器做了什麼
2.3 連結器年齡比編譯器長
2.4 模組拼裝——靜態連結
2.5 本章小結
第3章 目標檔案里有什麼
3.1 目標檔案的格式
3.2 目標檔案是什麼樣的
3.3 挖掘SIMPLESECTION.O
3.4 ELF 檔案結構描述
3.5 連結的接口——符號
3.6 調試信息
3.7 本章小結
第4章 靜態連結
4.1 空間與地址分配
4.2 符號解析與重定位
4.3 COMMON 塊
4.4 C++相關問題
4.5 靜態庫連結
4.6 連結過程控制
4.7 BFD 庫
4.8 本章小結
第5章 WINDOWS PE/COFF
5.1 WINDOWS 的二進制檔案格式PE/COFF 134
5.2 PE 的前身——COFF
5.3 連結指示信息
5.4 調試信息
5.5 大家都有符號表
5.6 WINDOWS 下的ELF——PE
5.7 本章小結
第3部分 裝載與動態連結
第6章 執行檔的裝載與進程
6.1 進程虛擬地址空間
6.2 裝載的方式
6.3 從作業系統角度看執行檔的裝載
6.4 進程虛存空間分布
6.5 LINUX 核心裝載ELF 過程簡介
6.6 WINDOWS PE 的裝載
6.7 本章小結
第7章 動態連結
7.1 為什麼要動態連結
7.2 簡單的動態連結例子
7.3 地址無關代碼
7.4 延遲綁定(PLT)
7.5 動態連結相關結構
7.6 動態連結的步驟和實現
7.7 顯式運行時連結
7.8 本章小結
第8章 LINUX 共享庫的組織
8.1 共享庫版本
8.2 符號版本
8.3 共享庫系統路徑
8.4 共享庫查找過程
8.5 環境變數
8.6 共享庫的創建和安裝
8.7 本章小結
第9章 WINDOWS 下的動態連結
9.1 DLL 簡介
9.2 符號導出導入表
9.3 DLL 最佳化
9.4 C++與動態連結
9.5 DLL HELL
9.6 本章小結
第4部分 庫與運行庫
第10章 記憶體
10.1 程式的記憶體布局
10.2 棧與調用慣例
10.3 堆與記憶體管理
10.4 本章小結
第11章 運行庫
11.1 入口函式和程式初始化
11.2 C/C++運行庫
11.3 運行庫與多執行緒
11.4 C++全局構造與析構
11.5 FREAD 實現
11.6 本章小結
第12章 系統調用與API
12.1 系統調用介紹
12.2 系統調用原理
12.3 WINDOWS API
12.4 本章小結
第13章 運行庫實現
13.1 C 語言運行庫
13.2 如何使用MINI CRT
13.3 C++運行庫實現
13.4 如何使用MINI CRT++
13.5 本章小結
附錄A
A.1 位元組序(BYTE ORDER)
A.2 ELF 常見段
A.3 常用開發工具命令行參考
索引