Archive of stories published by fcamel的程式開發心得

Linux 編譯 shared library 的方法和注意事項

《Linux 執行時尋找 symbol 的流程以及 shared library 相關知識》著重在執行期 (Runtime) 的行為,這篇補充說明編譯和連結(Link) 的行為,以及用 gcc 產生 shared library 的相關指令。

static linker 和 dynamic (runtime) linker

  • static linker 負責 link 產生 shared…

Linux 執行時尋找 symbol 的流程以及 shared library 相關知識

針對 Linux 和 ELF,這篇文章回答以下的問題:

  • 為何需要 shared library?
  • 如何解決執行時找不到某個 symbol / library?
  • 如何在執行時替換特定的 symbol?
  • 有多個重覆的 symbol 時,怎麼確保執行時用到期望的 symbol?

人月神話讀後心得

軟體工程其實是管理學

大學時讀過一遍,最近再讀一遍,發覺書中說的觀念仍然適用。工作經驗愈久,愈能認同書中所言。可能有些當時新穎的觀念,現在已被視為常識 (例如要用漸進式開發模型而不是瀑布模型)。也因為這樣,重看後其實沒學到什麼新東西,如同作者在《人月神話二十年後》自我調侃:

… 坐在我旁邊的那位陌生人正在看《人月神話》,而我一直在等,等看看他會不會有什麼反應,也許是一番話或某些表示。最後,飛機終於降落滑向了登機門,我不能再等了:

從硬體觀點了解 memory barrier 的實作和效果

之前從軟體的角度寫過 memory barrier 的介紹《Memory Barriers: a Hardware View for Software Hackers》則是從硬體的角度了解硬體設計者的需求,以及 read/write memory barrier 如何運作。我只有讀完前五章,後面用我理解的方式摘要這篇文章。本文的圖示都是從該篇文章取出來的。


簡介 C++11 atomic 和 memory order

前一篇文章是以一個小例子從開發者的角度,從上層到下層說明 thread 之間何時會同步資料。這篇只從 C++ 的角度討論 C++11 訂的 API。

Architectures (e.g., x86, ARM) 為了提升效率,會作許多事,這裡借用《C++ and Beyond 2012: Herb Sutter — atomic<> Weapons》的圖:

These were the top 10 stories published by fcamel的程式開發心得; you can also dive into yearly archives: 2016, 2017, 2018, 2019, 2020, 2021, and 2023.