<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                # 前言 [TOC=2,3] ## 背景 2007 年開始系統地學習 Shell 編程,并在[蘭大開源社區](http://oss.lzu.edu.cn)寫了序列文章。 在編寫[《Shell 編程范例》](http://tinylab.gitbooks.io/shellbook)文章的[《進程操作》](http://tinylab.gitbooks.io/shellbook/content/zh/chapters/01-chapter7.html)一章時,為了全面了解進程的來龍去脈,對程序開發過程的細節、ELF 格式的分析、進程的內存映像等進行了全面地梳理,后來搞得“雪球越滾越大”,甚至脫離了 Shell 編程關注的內容。所以想了個小辦法,“大事化小,小事化了”,把涉及到的內容進行了分解,進而演化成另外一個完整的序列。 2008 年 3 月 1 日,當初步完成整個序列時,做了如下的小結: > 到今天,關于"Linux 下 C 語言開發過程"的一個簡單視圖總算粗略地完成了,從寒假之前的一段時間到現在過了將近一個月左右吧。寫這個主題的目的源自“Shell 編程范例之進程操作”,當寫到這一章時,突然對進程的由來、本身和去向感到“迷惑不解”。所以想著好好花些時間來弄清楚它們,現在發現,這個由來就是這里的程序開發過程,進程來自一個普通的文本文件,在這里是 C 語言程序,C 語言程序經過編輯、預處理、編譯、匯編、鏈接、執行而成為一個進程;而進程本身呢?當一個可執行文件被執行以后,有了 exec 調用,被程序解釋器映射到了內存中,有了它的內存映像;而進程的去向呢?通過不斷地執行指令和內存映像的變化,進程完成著各項任務,等任務完成以后就可以退出了(exit)。 > 這樣一份視圖實際上是在寒假之前繪好的,可以從下圖中看到它;不過到現在才明白背后的很多細節。這些細節就是這個序列的每個篇章,可以對照“視圖”來閱讀它們。 ![C語言程序開發過程視圖](https://box.kancloud.cn/2015-10-06_56133158d27ed.jpg) ## 現狀 目前整個序列大部分都已經以 Blog 的形式寫完,大體結構目下: - [《把 VIM 打造成源代碼編輯器》](http://www.tinylab.org/make-vim-source-code-editor/) - 源代碼編輯過程:用 VIM 編輯代碼的一些技巧 - 更新時間:2008-2-22 - [《GCC 編譯的背后》](http://www.tinylab.org/behind-the-gcc-compiler/) - 編譯過程:預處理、編譯、匯編、鏈接 - 第一部分:《預處理和編譯》(更新時間:2008-2-22) - 第二部分:《匯編和鏈接》(更新時間:2008-2-22) - [《程序執行的那一剎那 》](http://www.tinylab.org/program-execution-the-moment/) - 執行過程:當從命令行輸入一個命令之后 - 更新時間:2008-2-15 - [《進程的內存映像》](http://www.tinylab.org/process-memory-image/) - 進程加載過程:程序在內存里是個什么樣子? - 第一部分(討論“緩沖區溢出和注入”問題)(更新時間:2008-2-13) - 第二部分(討論進程的內存分布情況)(更新時間:2008-6-1) - [《進程和進程的基本操作》](http://www.tinylab.org/process-and-basic-operation/) - 進程操作:描述進程相關概念和基本操作 - 更新時間:2008-2-21 - [《動態符號鏈接的細節》](http://www.tinylab.org/details-of-a-dynamic-symlink/) - 動態鏈接過程:函數 puts/printf 的地址在哪里? - 更新時間:2008-2-26 - [《打造史上最小可執行ELF文件》](http://www.tinylab.org/as-an-executable-file-to-slim-down/) - ELF 詳解:從”減肥”的角度一層一層剖開 ELF 文件,最終獲得一個可打印 Hello World 的 **45** 字節 ELF 可執行文件 - 更新時間:2008-2-23 - [《代碼測試、調試與優化小結》](http://www.tinylab.org/testing-debugging-and-optimization-of-code-summary/) - 程序開發過后:內存溢出了嗎?有緩沖區溢出?代碼覆蓋率如何測試呢?怎么調試匯編代碼?有哪些代碼優化技巧和方法呢? - 更新時間:2008-2-29 ## 計劃 考慮到整個 Linux 世界的蓬勃發展,Linux 和 C 語言的應用環境越來越多,相關使用群體會不斷增加,所以最近計劃把該序列重新整理,以自由書籍的方式不斷更新,以便惠及更多的讀者。 打算重新規劃、增補整個序列,并以開源項目的方式持續維護,并通過 [泰曉科技|TinLab.org](http://tinylab.org) 平臺接受讀者的反饋,直到正式發行出版。 自由書籍將會維護在 [泰曉科技](http://tinylab.org) 的[項目倉庫](https://github.com/tinyclub/open-c-book)中。項目相關信息如下: - 項目首頁:[http://www.tinylab.org/project/hello-c-world/](http://www.tinylab.org/project/hello-c-world/) - 代碼倉庫:[https://github.com/tinyclub/open-c-book.git](https://github.com/tinyclub/open-c-book) 歡迎大家指出本書初稿中的不足,甚至參與到相關章節的寫作、校訂和完善中來。 如果有時間和興趣,歡迎參與。可以通過 [泰曉科技](http://www.tinylab.org/about/) 聯系我們,或者直接關注微博[@泰曉科技](http://weibo.com/tinylaborg)并私信我們。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看