讀書筆記 程式設計師的自我修養 chp8

2021-07-24 21:33:42 字數 986 閱讀 2614

共享庫的更新被分為兩類:

相容更新

不相容更新

這個和二進位制介面有關係 ie, abi

不建議使用c++ 做共享庫

形如: libname.so.x.y.z

x 為主版本號, 表示重大公升級

y 表示此版本號, 表示增量公升級

z 表示發布版本號, 不新增任何新介面, 也不對介面進行更改

有些庫, 如 glibc 不遵從這個命名規則

利用so_name 可以自動定位到最新版本共享庫的特性, 確保公升級時候可以相容

系統會為每個共享庫建立乙個跟 so-name 相同的並且指向它的軟連線

此版本號交匯問題: 由於動態聯結器在進行動態鏈結的時候, 只對主版本號進行判斷, 如果依賴的共享庫的so-name 和系統中實際的共享庫的so-name 一致, 就不在進行檢查, 帶來版本號交匯的問題

對每個版本的全域性符號新增乙個標記 如 vers_1.3

遵從 fhs 標準:

/lib 存放系統最關鍵和基礎的共享庫

/usr/lib 存放非系統執行時候所需要的關鍵共享庫

/usr/local/lib 存放第三方軟體的共享庫

動態鏈結的模組所依賴的模組路徑儲存在 .dynamic 段裡面, 由dt_need 標識, 如果放置相對路徑, 會依次從 /lib, /usr/lib, /etc/ld.so.conf 指定的目錄進行查詢

為提高檢索效率, 通過 /etc/ld.so.cache 實現快取命中等操作

ld_libray_path 可以臨時改變某個應用程式的共享庫查詢路徑, 而不影響其他程式

ld_preload 最優先載入

ld_debug 輸出除錯資訊

使用 strip 清除符號資訊

使用attribute可以指定共享庫的構造和析構函式

程式設計師的自我修養 讀書筆記

第一部分 溫故而知新 第一章 介紹基本的背景知識 作業系統 執行緒 硬體 1 關於c語言中的hello world這些問題你都清楚嗎?2 計算機硬體裝置的三個核心部件 1 處理器cpu 2 記憶體 3 i o控制晶元 4 作業系統的功能 1 提供抽象介面。2 管理硬體資源 5 多道程式 分時系統 多...

《程式設計師的自我修養》讀書筆記

1 最佳實踐 作為一名程式設計師,你也需要嘗試去理解那些軟體領域最本質的東西,而我的建議就是學習那些最佳實踐。最佳實踐 bestpractice 是乙個管理學概念,即 可使結果最優,並減少出錯可能性的某種技術或方法。最佳實踐一定是要經受住實踐檢驗才得出的。學習本質 是 以慢打快 的策略,但這種策略短...

程式設計師的自我修養 讀書筆記

哦,笑吧,科廷,老夥計。這是上帝,或者也可以說是命運或自然,跟我們開的乙個玩笑。不過,不管這傢伙是誰或是什麼,他真幽默,哈哈!霍華德,碧血沙金 專業主義不但象徵著榮譽與驕傲,而且明確意味著責任與義務。假如不小心在程式中寫了乙個bug,以致於公司損失10萬,對於非專業人士來說,只會聳聳肩 狀況總是難免...