---
# System prepended metadata

title: C 語言和系統程式相關資源

---

# C 語言和系統程式相關資源
從[這邊](https://juluos.hackpad.com/Online-Resources-d2SDDlm41iu)搬過來的

## Operating System Development
* [Gustavo Duarte](http://duartes.org/gustavo/blog/)
    * [System Calls Make the World Go Round](http://duartes.org/gustavo/blog/post/system-calls) 
    * [Anatomy of a Program in Memory](http://duartes.org/gustavo/blog/post/anatomy-of-a-program-in-memory/)
    * [How the Kernel Manages Your Memory](http://duartes.org/gustavo/blog/post/how-the-kernel-manages-your-memory/)
    * [Page Cache, the Affair Between Memory and Files](http://duartes.org/gustavo/blog/post/page-cache-the-affair-between-memory-and-files/)
*  [cs4414: University of Virginia: Spring 2014 Operating system](http://rust-class.org/) 
* [Segmentation](http://en.wikipedia.org/wiki/Memory_segmentation)
* [Computer Science from the Bottom Up](http://www.bottomupcs.com/)
* [What is linux-gate.so.1?](http://www.trilithium.com/johan/2005/08/linux-gate/)
* [uClinux for Linux Programmers](http://www.linuxjournal.com/article/7221)

## 記憶體
* [What every programmer should know about memory](http://www.akkadia.org/drepper/cpumemory.pdf)

## 硬體相關
* [SPI made Simple](http://www.mct.net/new/spims.html)
* [(簡體中文) Linux X86架構虛擬內存分佈](http://blog.csdn.net/hanhuili/article/details/8299271)
* [Building Embedded Linux Full Tutorial for ARM](http://www.slideshare.net/sherif_mosa/building-embedded-linux-full-tutorial-for-arm)
* [ARMv8 與 Linux的新手筆記](http://loda.hala01.com/2014/12/armv8-%E8%88%87-linux%E7%9A%84%E6%96%B0%E6%89%8B%E7%AD%86%E8%A8%98/)
* [Raspberry Pi 安裝 Kali Linux 當隨身漏洞檢測和網路工具盒](http://www.arthurtoday.com/2014/12/install-kali-linux-on-a-raspberry-pi.html)
* [如何存取 Bluetooth Low Energy 週邊設備](http://www.arthurtoday.com/2014/12/bluetooth-low-energy-development-tool-for-node-golang-python.html)
* [Programming ARM Cortex (STM32) under GNU/Linux](http://regalis.com.pl/en/arm-cortex-stm32-gnulinux/)
* [STM32F4F9 入門教學](https://juluos.hackpad.com/nMddmn0vY8l)

## Toolchain
* [wiki/ DebianCrossCompilerHowto](https://wiki.debian.org/CrossCompiling)
* [Toolchains, libc and interesting interactions](https://www.technovelty.org/linux/toolchains-libc-and-interesting-interactions.html)
* [ARM toolchain naming](http://vh21.github.io/toolchain/2015/02/22/arm-toolchain-naming.html)
* [對編譯和鏈接的一點Hack](http://www.claudxiao.net/2010/07/hack_on_compile_and_link/)
* [LCU14 307- Advanced Toolchain Usage (parts 1&2)](http://www.slideshare.net/linaroorg/lcu14-307-advanced-toolchain-usage-parts-12)
* [HKG15-211: Advanced Toolchain Usage Part 4](http://www.slideshare.net/linaroorg/hkg15211-advanced-toolchain-usage-part-4)
## [Linaro Connect Hong Kong 2015 Content](http://www.linaro.org/blog/linaro-connect-hong-kong-2015-content-now-available/)
* [HKG15-201: Upstream Kernel Validation](http://www.slideshare.net/linaroorg/hkg15201-upstream-kernel-validation/9)
* [HKG15-203: TCWG 2015 Roadmap Review](http://www.slideshare.net/linaroorg/hkg15203-tcwg-2015-roadmap-review)
* [HKG15-205: OpenTAC - Open Hardware Test Automation Controller](http://www.slideshare.net/linaroorg/hkg15205-opentac-open-hardware-test-automation-controller)
* [HKG15-411: Browser Testing Framework for LHG](http://www.slideshare.net/linaroorg/hkg15411-browser-testing-framework-for-lhg)

## Linker
* [(C/C++ ) 如何在 Linux 上使用自行編譯的第三方函式庫](http://fcamel-life.blogspot.tw/2017/04/blog-post.html)
* [自行編譯含 debug symbol 的套件 (package)](http://fcamel-life.blogspot.tw/2012/01/debug-symbol-package.html)
* [解決 undefined symbol / reference](http://fcamel-life.blogspot.tw/2011/12/undefined-symbol-reference.html)
* [Circular symbol 在 linker 下的處理方式說明](https://hackmd.io/@_IE92EhdSOqy_hI9sQ-d6w/r1uW4zMZB)
* [ldd 顯示shared library每次位址不同的問題](https://hackmd.io/@_IE92EhdSOqy_hI9sQ-d6w/HJGWxCVZr)

## Loader
* [(投影片) Runtime Symbol Resolution](http://www.slideshare.net/kentarokawamoto/runtime-symbol-resolution)
* [(投影片) Linker and loader ](http://www.slideshare.net/akshaykhatri125/linker-and-loader-18359420)

## Build system
* [GNU Make, Autotools, CMake 簡介](http://www.slideshare.net/zzz00072/gnu-make-autotools-cmake)
* [Makefile header file dependency問題](http://wen00072.github.io/blog/2014/03/06/makefile-header-file-dependency-issues/)

## C 語言
* [http://fcamel-life.blogspot.tw/2012/01/c99.html](http://fcamel-life.blogspot.tw/2012/01/c99.html)
* [Linux中使用C語言載入data object 檔案資料](http://wen00072.github.io/blog/2014/04/15/loads-the-data-object-using-the-c-language-archives-data-in-linux/)
* [Linux中使用C語言載入data object 檔案資料 (續）](http://wen00072.github.io/blog/2014/04/16/load-linux-using-c-language-data-object-archives-data-continued/)
* [GNU: The C Preprocessor 導讀](http://wen00072.github.io/blog/2013/10/13/talk-about-c-macros/)
* [What a C programmer should know about memory](https://marek.vavrusa.com/memory/)
* [C語言常見誤解 (Google Doc)](https://docs.google.com/document/d/12cR0qb-kl7jB8RA_eHQu8OSmGKEOshwLeX4Mx5qBzUE/edit?pli=1)
* [Who Says C is Simple?](http://www.eecs.berkeley.edu/~necula/cil/cil016.html)
* [Linus超靠北C語言教學](https://hackmd.io/s/Sk6TLrfex)
* [http://fcamel-life.blogspot.tw/2012/01/man-page.html](http://fcamel-life.blogspot.tw/2012/01/man-page.html)

### libc
* [追蹤 glibc 裡的程式](http://fcamel-life.blogspot.tw/2012/01/glibc.html)

## 組合語言
* [The Real, Protected, Long mode assembly tutorial for PCs](http://www.codeproject.com/Articles/45788/The-Real-Protected-Long-mode-assembly-tutorial-for)
* [Learning Assembly from Intel to AT&T Syntax](http://30cm.tw/?p=675)

## 工具
* [熟悉系統工具好處多多](http://fcamel-life.blogspot.tw/2012/01/blog-post.html)
* [在 Linux 下開發 C/C++ 的新手指南](http://fcamel-fc.blogspot.tw/2012/01/linux-cc.html)
### Binutils
* [nm 的欄位說明](http://wen00072.github.io/blog/2014/12/08/nm-field-descriptions/)
* [Understanding ld-linux.so.2](http://www.cs.virginia.edu/~dww4s/articles/ld_linux.html)
* [(PDF) AVR32795: Using the GNU Linker Scripts on AVR UC3 Devices](http://www.atmel.com/Images/doc32158.pdf) 
* [在沒有 Frame Pointer 的情況下進行 Stack Unwind](https://www.facebook.com/notes/scott-tsai/%E5%9C%A8%E6%B2%92%E6%9C%89-frame-pointer-%E7%9A%84%E6%83%85%E6%B3%81%E4%B8%8B%E9%80%B2%E8%A1%8C-stack-unwind/784226238316104)
* [Runtime Symbol Resolution](http://www.slideshare.net/kentarokawamoto/runtime-symbol-resolution)
* [Toolchains, libc and interesting interactions Linux shared library link rule](https://www.technovelty.org/linux/toolchains-libc-and-interesting-interactions.html)

## Performance and profile
* [Linux Profiling at Netflix](http://www.slideshare.net/brendangregg/scale2015-linux-perfprofiling)

## 除錯
* [抓漏 - 使用valgrind檢查C語言memory leak](http://wen00072.github.io/blog/2014/11/29/catching-leakage-use-valgrind-checking-c-memory-leak/)
* [抓漏 - gdb 和 valgrind 合體技](http://wen00072.github.io/blog/2014/11/29/catch-the-leak-gdb-and-valgrind-siamese-juggling/)
* [Memory Error Detection Using GCC](https://developers.redhat.com/blog/2017/02/22/memory-error-detection-using-gcc/)
* [Source Level Debug using OpenOCD/GDB/Eclipse on Intel® Quark™ SoC X1000 Application Note](https://communities.intel.com/docs/DOC-22203)
* [Openwrt with gdb](http://chaolong-chen-blog.logdown.com/posts/255439-debug-openwrt-with-gdb)
* [hackme: Deconstructing an ELF File](http://manoharvanga.com/hackme/)
* [ELF and DWARF for Linux for S/390 and zSeries](http://www.tachyonsoft.com/elf.html)
* [Possible to call inline functions in gdb and/or emit them using GCC?](http://stackoverflow.com/questions/22029834/possible-to-call-inline-functions-in-gdb-and-or-emit-them-using-gcc)
* [有病治病，沒病強身: Cppcheck + Valgrind](http://goodspeedlee.blogspot.tw/2016/07/cppcheck-valgrind.html)
* [對 GDB 十五分鐘的介紹](https://blog.gslin.org/archives/2016/07/17/6682/%e5%b0%8d-gdb-%e5%8d%81%e4%ba%94%e5%88%86%e9%90%98%e7%9a%84%e4%bb%8b%e7%b4%b9/)
* [除錯技巧：在 Ubuntu 上找出第三方函式庫的程式碼](http://fcamel-life.blogspot.tw/2017/03/ubuntu.html)
* [移植 Linux Kernel 造成無法開機之解決方案以及除錯工具](https://szlin.me/2017/05/17/unable-to-boot-with-linux-kernel/)

## 系統程式
* [multiple thread 存取共享資料的小技巧](http://fcamel-life.blogspot.tw/2015/11/multiple-thread.html)

## 編輯器
### vim
* [Trace C 程式碼的vim設定](http://wen00072.github.io/blog/2016/11/26/vim-setup-for-trace-c-code/)
* [Trace 程式碼之皮投影片](http://wen00072.github.io/blog/2014/11/24/the-skin-slides-to-trace-code-on-line/)

## ELF
* [Chapter 4: Object Files](http://www.sco.com/developers/gabi/latest/ch4.intro.html)
* [stackoverflow: readelf vs. objdump: why are both needed](http://stackoverflow.com/questions/8979664/readelf-vs-objdump-why-are-both-needed)
* [stackoverflow: Understanding the relocation table output from readelf](http://stackoverflow.com/questions/19593883/understanding-the-relocation-table-output-from-readelf)
* [Executable and Linkable Format](http://en.wikipedia.org/wiki/Executable_and_Linkable_Format)
* [How main() is executed on Linux](http://tldp.org/LDP/LGNET/84/hawk.html)
* [Executable & Linkable Format 101 - a Linux executable walkthrough](https://linux-audit.com/elf-binaries-on-linux-understanding-and-analysis/)

## Linux 操作
* [Introduce to Linux command line](http://wen00072.github.io/blog/2014/05/16/linux-command-line-slides-on-line/)
* [使用 Screen 指令操控 UNIX/Linux 終端機的教學與範例](http://puremonkey2010.blogspot.tw/2014/12/linux-screen-unixlinux.html)
* [取得執行檔所在的目錄名稱](http://fcamel-life.blogspot.tw/2015/01/blog-post_29.html)

## 未分類
* [Naming Things](https://speakerdeck.com/dazz/naming-things)
* [Slack 自動註冊](https://github.com/outsideris/slack-invite-automation)
* [Server 安全管理](https://plusbryan.com/my-first-5-minutes-on-a-server-or-essential-security-for-linux-servers)