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

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                # 第?27?章?本階段總結 在這一階段我們又學習了很多新的語法規則,首先讀者應該回到[第?13?章 _本階段總結_](ch13.html#summary1)把那些知識點重新總結一遍。然后我們總結一下各種開發調試工具的用法。 1、gcc `-c` 編譯生成目標文件(Relocatable),詳見[第?2?節 “`main`函數和啟動例程”](ch19s02.html#asmc.main)。 `-Dmacro[=defn]` 定義一個宏,詳見[第?3?節 “條件預處理指示”](ch21s03.html#prep.cond)。 `-E` 只做預處理而不編譯,`cpp`命令也可以達到同樣的效果,詳見[第?2.1?節 “函數式宏定義”](ch21s02.html#prep.funcmacro)。 `-g` 在生成的目標文件中添加調試信息,所謂調試信息就是源代碼和指令之間的對應關系,在`gdb`調試和`objdump`反匯編時要用到這些信息,詳見[第?1?節 “單步執行和跟蹤函數調用”](ch10s01.html#gdb.step)。 `-Idir` `dir`是頭文件所在的目錄,詳見[第?2.2?節 “頭文件”](ch20s02.html#link.header)。 `-Ldir` `dir`是庫文件所在的目錄,詳見[第?3?節 “靜態庫”](ch20s03.html#link.staticlib)。 `-M`和`-MM` 輸出“`.o`文件: `.c`文件 `.h`文件”這種形式的Makefile規則,`-MM`的輸出不包括系統頭文件,詳見[第?4?節 “自動處理頭文件的依賴關系”](ch22s04.html#make.header)。 `-o outfile` `outfile`輸出文件的文件名,詳見[第?2?節 “`main`函數和啟動例程”](ch19s02.html#asmc.main)。 `-O?` 各種編譯優化選項,詳見[第?6?節 “volatile限定符”](ch19s06.html#asmc.volatile)。 `-print-search-dirs` 打印庫文件的默認搜索路徑,詳見[第?3?節 “靜態庫”](ch20s03.html#link.staticlib)。 `-S` 編譯生成匯編代碼,詳見[第?2?節 “`main`函數和啟動例程”](ch19s02.html#asmc.main)。 `-v` 打印詳細的編譯鏈接過程,詳見[第?2?節 “`main`函數和啟動例程”](ch19s02.html#asmc.main)。 `-Wall` 打印所有的警告信息,詳見[第?4?節 “第一個程序”](intro.helloworld.html "4.?第一個程序")。 `-Wl,options` `options`是傳遞給鏈接器的選項,詳見[第?4?節 “共享庫”](ch20s04.html#link.shared)。 2、gdb 1. 在[第?10?章 _gdb_](ch10.html#gdb)集中介紹了`gdb`的基本命令和調試方法。 2. 在[第?1?節 “函數調用”](ch19s01.html#asmc.funccall)提到了`gdb`的指令級調試和反匯編命令。 3. 如果一個程序由多個`.c`文件編譯鏈接而成,用`gdb`調試時如何定位某個源文件中的某一行代碼呢?在[第?1?節 “多目標文件的鏈接”](ch20s01.html#link.basic)有介紹。 4. 在[第?6?節 “指向指針的指針與指針數組”](ch23s06.html#pointer.parray)提到了用`gdb`調試時如何給程序提供命令行參數。 3、其它開發調試工具 1. `as`,匯編器,用法詳見[例?18.1 “最簡單的匯編程序”](ch18s01.html#asm.simpleasm)。 2. `ld`,鏈接器,用法詳見[例?18.1 “最簡單的匯編程序”](ch18s01.html#asm.simpleasm),用`--verbose`選項可以顯示默認鏈接腳本,詳見[第?1?節 “多目標文件的鏈接”](ch20s01.html#link.basic)。 3. `readelf`,讀ELF文件信息,用法詳見[第?5.1?節 “目標文件”](ch18s05.html#asm.relocatable)。 4. `objdump`,顯示目標文件中的信息,本書主要用它做反匯編,用法詳見[第?5.1?節 “目標文件”](ch18s05.html#asm.relocatable)。 5. `hexdump`,以十六進制或ASCII碼顯示一個文件,用法詳見[第?5.1?節 “目標文件”](ch18s05.html#asm.relocatable)。 6. `ar`,把目標文件打包成靜態庫,用法詳見[第?3?節 “靜態庫”](ch20s03.html#link.staticlib)。 7. `ranlib`,給`ar`打包的靜態庫建索引,用法詳見[第?3?節 “靜態庫”](ch20s03.html#link.staticlib)。 8. `nm`,查看符號表,用法詳見[第?2?節 “`main`函數和啟動例程”](ch19s02.html#asmc.main)。
                  <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>

                              哎呀哎呀视频在线观看