幫助中心 | 我的帳號 | 關於我們

高級C\C++編譯技術(典藏版)/程序員書庫

  • 作者:(美)米蘭·斯特瓦諾維奇|責編:張秀華|譯者:盧譽聲
  • 出版社:機械工業
  • ISBN:9787111717300
  • 出版日期:2023/01/01
  • 裝幀:平裝
  • 頁數:266
人民幣:RMB 89 元      售價:
放入購物車
加入收藏夾

內容大鋼
    與純粹講解理論與技術細節的書不同,本書一方面對基本的理論進行了闡述,另一方面則聚焦于C/C++使用靜態庫和動態庫的一些注意事項,並舉例說明如何解決實際的鏈接與裝載問題。此外,本書盡量使用通俗易懂的語言來闡述這些知識,並補充了大量示例,避免讓讀者整天糾結于枯燥的理論。
    本書第1?4章對多任務操作系統、程序生命周期以及代碼重用等重要概念進行介紹,為後續內容做鋪墊;第5章介紹靜態庫的使用方法及設計技巧;第6?11章介紹動態庫的相關概念,包括不同平台中動態庫的技術細節,比如庫文件定位、引用解析與符號處理等,以及一些動態庫設計的基本方法與原則和不同平台下應當注意的設計細節;第12?14章主要給出一些實踐方面的總結,便於讀者快速查找相關的概念,而且還總結了一些特定平台的二進位文件分析工具。

作者介紹
(美)米蘭·斯特瓦諾維奇|責編:張秀華|譯者:盧譽聲
    Milan Stevanovic(米蘭·斯特瓦諾維奇),資深軟體顧問,在多個學科的工程領域都有著豐富的經驗。他主要從事的領域是Linux和Windows平台下的多媒體壓縮格式及其多媒體框架設計。他熱衷於開源,而且是avxsynth開源項目的主要貢獻者,對C/C++底層技術有著深入的研究。

目錄
譯者序
前言
第1章  多任務操作系統基礎
  1.1  一些有用的抽象概念
  1.2  存儲器層次結構與緩存策略
  1.3  虛擬內存
  1.4  虛擬地址
  1.5  進程的內存劃分方案
  1.6  二進位文件、編譯器、鏈接器與裝載器的作用
  1.7  小結
第2章  程序生命周期階段基礎
  2.1  基本假設
  2.2  編寫代碼
  2.3  編譯階段
    2.3.1  基本概念
    2.3.2  相關概念
    2.3.3  編譯的各個階段
    2.3.4  目標文件屬性
    2.3.5  編譯過程的局限性
  2.4  鏈接
    2.4.1  鏈接階段
    2.4.2  鏈接器視角
  2.5  可執行文件屬性
    2.5.1  各種節的類型
    2.5.2  各種符號類型
第3章  載入程序執行階段
  3.1  shell的重要性
  3.2  內核的作用
  3.3  裝載器的作用
    3.3.1  裝載器視角下的二進位文件(節與段)
    3.3.2  程序載入階段
  3.4  程序執行入口點
    3.4.1  裝載器查找入口點
    3.4.2  _start()函數的作用
    3.4.3  __libc_start_main()函數的作用
    3.4.4  棧和調用慣例
第4章  重用概念的作用
  4.1  靜態庫
  4.2  動態庫
    4.2.1  動態庫和共享庫
    4.2.2  動態鏈接詳解
    4.2.3  Windows平台中動態鏈接的特點
    4.2.4  動態庫的特點
    4.2.5  應用程序二進位介面
  4.3  靜態庫和動態庫對比
    4.3.1  導入選擇條件的差異
    4.3.2  部署難題
  4.4  一些有用的類比
  4.5  結論:二進位重用概念所產生的影響
第5章  使用靜態庫

  5.1  創建靜態庫
    5.1.1  創建Linux靜態庫
    5.1.2  創建Windows靜態庫
  5.2  靜態庫的使用場合
  5.3  靜態庫設計技巧
    5.3.1  丟失符號可見性和唯一性的可能性
    5.3.2  靜態庫使用禁忌
    5.3.3  靜態庫鏈接的具體規則
    5.3.4  將靜態庫轉換成動態庫
    5.3.5  靜態庫在64位Linux平台上的問題
第6章  動態庫的設計:基礎篇
  6.1  創建動態庫
    6.1.1  在Linux中創建動態庫
    6.1.2  在Windows中創建動態庫
  6.2  設計動態庫
    6.2.1  設計二進位介面
    6.2.2  設計應用程序的二進位介面
    6.2.3  控制動態庫符號的可見性
    6.2.4  完成鏈接需要滿足的條件
  6.3  動態鏈接模式
    6.3.1  載入時動態鏈接
    6.3.2  運行時動態鏈接
    6.3.3  比較兩種動態鏈接模式
第7章  定位庫文件
  7.1  典型用例場景
    7.1.1  開發用例場景
    7.1.2  用戶運行時用例場景
  7.2  構建過程中庫文件的定位規則
    7.2.1  Linux構建過程中的庫文件定位規則
    7.2.2  Windows構建過程中的庫文件定位規則
  7.3  運行時動態庫文件的定位規則
    7.3.1  Linux運行時動態庫文件的定位規則
    7.3.2  Windows運行時動態庫文件的定位規則
  7.4  示例:Linux構建時與運行時的庫文件定位
第8章  動態庫的設計:進階篇
  8.1  解析內存地址的必要性
  8.2  引用解析中的常見問題
  8.3  地址轉換引發的問題
    8.3.1  情景1:客戶二進位文件需要知道動態庫符號地址
    8.3.2  情景2:被裝載的庫不需要知道其自身符號地址
  8.4  鏈接器-裝載器協作
    8.4.1  總體策略
    8.4.2  具體技術
    8.4.3  鏈接器重定位提示概述
  8.5  鏈接器-裝載器協作實現技術
    8.5.1  裝載時重定位
    8.5.2  位置無關代碼
第9章  動態鏈接時的重複符號處理
  9.1  重複符號的定義
  9.2  重複符號的默認處理

  9.3  在動態庫鏈接過程中處理重複符號
    9.3.1  處理重複符號問題的一般策略
    9.3.2  鏈接器解析動態庫重複符號的模糊演算法準則
  9.4  特定重複名稱案例分析
    9.4.1  案例1:客戶二進位文件符號與動態庫ABI函數衝突
    9.4.2  案例2:不同動態庫的ABI符號衝突
    9.4.3  案例3:動態庫ABI符號和另一個動態庫局部符號衝突
    9.4.4  案例4:兩個未導出的動態庫符號衝突
  9.5  小提示:鏈接並不提供任何類型的命名空間繼承
……
第10章  動態庫的版本控制
第11章  動態庫:其他主題
第12章  Linux工具集
第13章  平台實踐
第14章  Windows工具集

  • 商品搜索:
  • | 高級搜索
首頁新手上路客服中心關於我們聯絡我們Top↑
Copyrightc 1999~2008 美商天龍國際圖書股份有限公司 臺灣分公司. All rights reserved.
營業地址:臺北市中正區重慶南路一段103號1F 105號1F-2F
讀者服務部電話:02-2381-2033 02-2381-1863 時間:週一-週五 10:00-17:00
 服務信箱:bookuu@69book.com 客戶、意見信箱:cs@69book.com
ICP證:浙B2-20060032