# 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)