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

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                [TOC] > [查考](https://tkstorm.com/linux-programming/introduction.html) ## gcc 命令說明 ``` -w 不生成任何警告信息 -Wall 生成所有警告信息 -c 只激活預處理,編譯,和匯編,也就是他只把程序做成obj文件 例子 gcc -c hello.c ,將生成 .o 的 obj 文件 -S 只激活預處理和編譯,就是指把文件編譯成為匯編代碼 例子 gcc -S hello.c ,將生成 .s 的可查看匯編的文件 -o 制定目標名稱, 默認的時候, gcc 編譯出來的文件是 a.out 例子 gcc -o hello hello.c -M | -MM 生成文件關聯的信息。包含目標文件所依賴的所有源代碼 例子 gcc -M hello.c -l 制定編譯的時候使用的庫 例子 gcc -lmyfunc hello.c -L 制定編譯的時候,搜索庫的路徑 例子 gcc -o test test.c -l myfunc -L . -O01234 編譯器的優化選項的 4 個級別,-O0 表示沒有優化, -O1 為默認值,-O3 優化級別最高 -static 此選項將禁止使用動態庫,編譯出來都很大,也不需要什么動態連接庫,就可以運行 -share 此選項將盡量使用動態庫,所以生成文件比較小,但是需要系統由動態庫 例子 gcc -fPIC -shared myfunc.c -o libmyfunc.so -print-prog-name=cc1 -v 獲知系統的 include 默認搜索路徑 -print-search-dirs lib庫默認搜索路徑 ``` ## 頭文件 * linux版本頭文件:/usr/include/sys、/usr/include/linux * 其他的/usr/include/X11、/usr/include/c++等 在調用c語言編譯器時,使用`-I`來包含保存在標準的子目錄或者非標準位置中的頭文件。 ``` gcc -I/usr/openwin/include fred.c ``` ## 庫文件 - 標準庫函數通常存儲在`/lib`、`/usr/lib`兩個目錄中 - 若有用到標準C語言運行庫外的其他庫,則需要使用`-l`方式指明 **庫名** 以lib開頭,隨后指明是什么庫(c:C語言庫,m:數學庫),后綴類型(`.a`:傳統靜態函數庫,`.so`:共享函數庫) **編譯** 可以用完整庫名,或者`-l`加庫簡寫(如`-lm`,代表編譯過程中,需要從標準庫目錄中搜索名為libm.a的數學函數庫) `-l`標志的另一個好處,有共享庫會優先使用共享庫 ``` gcc -o fred fred.c -lm // 等效 gcc -o fred fred.c /usr/lib/libm.a ``` 可以基于大寫的-L,使編譯器增加庫的搜索目錄 `gcc -o x11fred -L/usr/openwin/lib x11fred.c -lX11`,表示用`/usr/openwin/lib`目錄中的libX11庫來編譯和鏈接程序x11fred. ## 預定義include的<>與""的區別 對于 `#include <...>` ,GCC 編譯器會在默認 include 搜索路徑中尋找。 對于 `#include "..."` ,GCC 編譯器會在**當前路徑**搜索 .h 文件。當然你也可以使用 -I 選項提供額外的搜索路徑,比如 `-I /home/test/` ## 示例 ### -print-prog-name=cc1 -v ``` > gcc -print-prog-name=cc1 -v 使用內建 specs。 COLLECT_GCC=gcc COLLECT_LTO_WRAPPER=/usr/libexec/gcc/x86_64-redhat-linux/4.8.5/lto-wrapper /usr/libexec/gcc/x86_64-redhat-linux/4.8.5/cc1 ``` ### gcc -print-search-dirs ``` > gcc -print-search-dirs 安裝:/usr/lib/gcc/x86_64-redhat-linux/4.8.5/ 程序:=/usr/libexec/gcc/x86_64-redhat-linux/4.8.5/:/usr/libexec/gcc/x86_64-redhat-linux/4.8.5/:/usr/libexec/gcc/x86_64-redhat-linux/:/usr/lib/gcc/x86_64-redhat-linux/4.8.5/:/usr/lib/gcc/x86_64-redhat-linux/:/usr/lib/gcc/x86_64-redhat-linux/4.8.5/../../../../x86_64-redhat-linux/bin/x86_64-redhat-linux/4.8.5/:/usr/lib/gcc/x86_64-redhat-linux/4.8.5/../../../../x86_64-redhat-linux/bin/ 庫:=/usr/lib/gcc/x86_64-redhat-linux/4.8.5/:/usr/lib/gcc/x86_64-redhat-linux/4.8.5/../../../../x86_64-redhat-linux/lib/x86_64-redhat-linux/4.8.5/:/usr/lib/gcc/x86_64-redhat-linux/4.8.5/../../../../x86_64-redhat-linux/lib/../lib64/:/usr/lib/gcc/x86_64-redhat-linux/4.8.5/../../../x86_64-redhat-linux/4.8.5/:/usr/lib/gcc/x86_64-redhat-linux/4.8.5/../../../../lib64/:/lib/x86_64-redhat-linux/4.8.5/:/lib/../lib64/:/usr/lib/x86_64-redhat-linux/4.8.5/:/usr/lib/../lib64/:/usr/lib/gcc/x86_64-redhat-linux/4.8.5/../../../../x86_64-redhat-linux/lib/:/usr/lib/gcc/x86_64-redhat-linux/4.8.5/../../../:/lib/:/usr/lib/ ```
                  <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>

                              哎呀哎呀视频在线观看