程序員的自我修養(yǎng)——該書的全名為《程序員的自我修養(yǎng):鏈接、裝載與庫(kù)》,本節(jié)內(nèi)容小編為大家整理帶來(lái)的這份程序員的自我修養(yǎng)電子書為epub格式免費(fèi)完整版。如果你是新手,如果你曾好奇過(guò)windows系統(tǒng)目錄下和軟件目錄下大堆大堆的dll文件是什么?那么就不煩來(lái)看看程序員的自我修養(yǎng)(鏈接裝載與庫(kù))這本書吧!有人說(shuō)“此書非讀不可, 而且要經(jīng)常讀, 毫無(wú)疑問(wèn)作者對(duì)于鏈接、裝載和庫(kù)這三個(gè)方面是有深刻的認(rèn)識(shí)的,于深度和廣度都無(wú)可挑剔,而且組織文字的能力也屬上乘……”——不管你信不信,反正我是信了的。
程序員的自我修養(yǎng)內(nèi)容簡(jiǎn)介
本書主要介紹系統(tǒng)軟件的運(yùn)行機(jī)制和原理,涉及在Windows和Linux兩個(gè)系統(tǒng)平臺(tái)上,一個(gè)應(yīng)用程序在編譯、鏈接和運(yùn)行時(shí)刻所發(fā)生的各種事項(xiàng),包括:代碼指令是如何保存的,庫(kù)文件如何與應(yīng)用程序代碼靜態(tài)鏈接,應(yīng)用程序如何被裝載到內(nèi)存中并開始運(yùn)行,動(dòng)態(tài)鏈接如何實(shí)現(xiàn),C/C++運(yùn)行庫(kù)的工作原理,以及操作系統(tǒng)提供的系統(tǒng)服務(wù)是如何被調(diào)用的。每個(gè)技術(shù)專題都配備了大量圖、表和代碼實(shí)例,力求將復(fù)雜的機(jī)制以簡(jiǎn)潔的形式表達(dá)出來(lái)。本書最后還提供了一個(gè)小巧且跨平臺(tái)的C/C++運(yùn)行庫(kù)MiniCRT,綜合展示了與運(yùn)行庫(kù)相關(guān)的各種技術(shù)。
本書對(duì)裝載、鏈接和庫(kù)進(jìn)行了深入淺出的剖析,并且輔以大量的例子和圖表,可以作為計(jì)算機(jī)軟件專業(yè)和其他相關(guān)專業(yè)大學(xué)本科高年級(jí)學(xué)生深入學(xué)習(xí)系統(tǒng)軟件的參考書。同時(shí),還可作為各行業(yè)從事軟件開發(fā)的工程師、研究人員以及其他對(duì)系統(tǒng)軟件實(shí)現(xiàn)機(jī)制和技術(shù)感興趣者的自學(xué)教材。
程序員的自我修養(yǎng)目錄
第1部分 簡(jiǎn)介
第1章 溫故而知新
1.1 從HELLO WORLD 說(shuō)起
1.2 萬(wàn)變不離其宗
1.3 站得高,望得遠(yuǎn)
1.4 操作系統(tǒng)做什么
1.5 內(nèi)存不夠怎么辦
1.6 眾人拾柴火焰高
1.7 本章小結(jié)
第2部分 靜態(tài)鏈接
第2章 編譯和鏈接
2.1 被隱藏了的過(guò)程
2.2 編譯器做了什么
2.3 鏈接器年齡比編譯器長(zhǎng)
2.4 模塊拼裝——靜態(tài)鏈接
2.5 本章小結(jié)
第3章 目標(biāo)文件里有什么
3.1 目標(biāo)文件的格式
3.2 目標(biāo)文件是什么樣的
3.3 挖掘SIMPLESECTION.O
3.4 ELF 文件結(jié)構(gòu)描述
3.5 鏈接的接口——符號(hào)
3.6 調(diào)試信息
3.7 本章小結(jié)
第4章 靜態(tài)鏈接
4.1 空間與地址分配
4.2 符號(hào)解析與重定位
4.3 COMMON 塊
4.4 C++相關(guān)問(wèn)題
4.5 靜態(tài)庫(kù)鏈接
4.6 鏈接過(guò)程控制
4.7 BFD 庫(kù)
4.8 本章小結(jié)
第5章 WINDOWS PE/COFF
5.1 WINDOWS 的二進(jìn)制文件格式PE/COFF 134
5.2 PE 的前身——COFF
5.3 鏈接指示信息
5.4 調(diào)試信息
5.5 大家都有符號(hào)表
5.6 WINDOWS 下的ELF——PE
5.7 本章小結(jié)
第3部分 裝載與動(dòng)態(tài)鏈接
第6章 可執(zhí)行文件的裝載與進(jìn)程
6.1 進(jìn)程虛擬地址空間
6.2 裝載的方式
6.3 從操作系統(tǒng)角度看可執(zhí)行文件的裝載
6.4 進(jìn)程虛存空間分布
6.5 LINUX 內(nèi)核裝載ELF 過(guò)程簡(jiǎn)介
6.6 WINDOWS PE 的裝載
6.7 本章小結(jié)
第7章 動(dòng)態(tài)鏈接
7.1 為什么要?jiǎng)討B(tài)鏈接
7.2 簡(jiǎn)單的動(dòng)態(tài)鏈接例子
7.3 地址無(wú)關(guān)代碼
7.4 延遲綁定(PLT)
7.5 動(dòng)態(tài)鏈接相關(guān)結(jié)構(gòu)
7.6 動(dòng)態(tài)鏈接的步驟和實(shí)現(xiàn)
7.7 顯式運(yùn)行時(shí)鏈接
7.8 本章小結(jié)
第8章 LINUX 共享庫(kù)的組織
8.1 共享庫(kù)版本
8.2 符號(hào)版本
8.3 共享庫(kù)系統(tǒng)路徑
8.4 共享庫(kù)查找過(guò)程
8.5 環(huán)境變量
8.6 共享庫(kù)的創(chuàng)建和安裝
8.7 本章小結(jié)
第9章 WINDOWS 下的動(dòng)態(tài)鏈接
9.1 DLL 簡(jiǎn)介
9.2 符號(hào)導(dǎo)出導(dǎo)入表
9.3 DLL 優(yōu)化
9.4 C++與動(dòng)態(tài)鏈接
9.5 DLL HELL
9.6 本章小結(jié)
第4部分 庫(kù)與運(yùn)行庫(kù)
第10章 內(nèi)存
10.1 程序的內(nèi)存布局
10.2 棧與調(diào)用慣例
10.3 堆與內(nèi)存管理
10.4 本章小結(jié)
第11章 運(yùn)行庫(kù)
11.1 入口函數(shù)和程序初始化
11.2 C/C++運(yùn)行庫(kù)
11.3 運(yùn)行庫(kù)與多線程
11.4 C++全局構(gòu)造與析構(gòu)
11.5 FREAD 實(shí)現(xiàn)
11.6 本章小結(jié)
第12章 系統(tǒng)調(diào)用與API
12.1 系統(tǒng)調(diào)用介紹
12.2 系統(tǒng)調(diào)用原理
12.3 WINDOWS API
12.4 本章小結(jié)
第13章 運(yùn)行庫(kù)實(shí)現(xiàn)
13.1 C 語(yǔ)言運(yùn)行庫(kù)
13.2 如何使用MINI CRT
13.3 C++運(yùn)行庫(kù)實(shí)現(xiàn)
13.4 如何使用MINI CRT++
13.5 本章小結(jié)
附錄A
A.1 字節(jié)序(BYTE ORDER)
A.2 ELF 常見段
A.3 常用開發(fā)工具命令行參考
索引
程序員的自我修養(yǎng)內(nèi)容截圖
- PC官方版
- 安卓官方手機(jī)版
- IOS官方手機(jī)版