青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

天下

記錄修行的印記

c程序編譯流程

1.預處理(Pre-Processing)
2.編譯(Compiling)
3.匯編(Assembling)
4.鏈接(Linking)


1.預處理(Pre-Processing)
讀取c源程序,對其中的偽指令(以#開頭的指令)和 預定義符號進行處理
偽指令主要包括以下四個方面
(1)宏定義指令:
#define,#undef。

(2)條件編譯指令:
#ifdef,#ifndef,#else,#elif,#endif,等等。
這些偽指令的引入使得程序員可以通過定義不同的宏來決定編譯程序對哪些代碼進行處理。預編譯程序將根據有關的文件,將那些不必要的代碼過濾掉

(3)頭文件包含指令:
#include "FileName"或者#include <stdio.h>等。
使用< >引用的頭文件是告訴編譯器要到系統指定的目錄下去尋找
而使用 " " 引用的頭文件是告訴編譯器先在默認目錄下查找, 如果默認目錄下找不到則再到系統目錄下查找
一般情況下, 你自己寫的頭文件用 " ",編譯器自帶的頭文件用< >
這樣方便區別頭文件的類型
如果全部用 " "也是可以的, 只不過不符合規范結構而已。

(4)預定義符號,預編譯程序可以識別一些預定義符號。
C語言編譯器的預定義符號:
__LINE__           當前(源代碼文件)行號                      [整數]
__FILE__           當前正在編譯的文件的文件名                [字符串]
__DATE__           當前日期,以“月月 日日 年年年年”的形式給出 [字符串]
__TIME__           當前時間,以“HH:mm:ss”的格式給出          [字符串]
__STDC__           如果編譯器符合ANSI C標準,該宏為1,否則為0
__STDC_HOSTED__    如果實現了所有C標準庫,該宏為1,否則為0
__STDC_VERSION__   被定義為199901L(不同編譯器可能不一樣,比如gcc里就沒有這個預定義符號)

注:這些預定義符號的首尾為兩個下劃線,如果是兩個單詞,中間以一個下劃線連接。
如果在源代碼中使用了這些符號,它們會在預處理時被轉換(使用gcc編譯器的 -E 選項可以看到替換后的值)

C 標準里還在每個函數內預定義了一個標志符: __func__
它被定義為 static const char __func__[]="function-name";
即不能在程序內對__func__賦值,也不能改變它所指向的字符串(函數名),否則報編譯錯誤

注:__func__是個標志符,它在預處理階段不被替換,所以使用gcc -E 是看不到任何效果的。

預編譯程序對于在源程序中出現的預定義符號將用合適的值進行替換。

預編譯程序所完成的基本上是對源程序的“替代”工作。
經過此種替代,生成一個沒有宏定義、沒有條件編譯指令、沒有特殊符號的輸出文件。這個文件的含義同沒有經過預處理的源文件是相同的,但內容有所不同。下一步,此輸出文件將作為編譯程序的輸出而被翻譯成為機器指令。

2.編譯(Compiling)
預編譯程序所要作得工作就是通過詞法分析和語法分析,在確認所有的指令都符合語法規則之后,將其翻譯成等價的中間代碼表示或匯編代碼。

3.匯編(Assembling)
匯編過程實際上指把匯編語言代碼翻譯成目標機器指令的過程。對于被翻譯系統處理的每一個C語言源程序,都將最終經過這一處理而得到相應的目標文件。目標文件中所存放的也就是與源程序等效的目標的機器語言代碼。
匯編階段就是把編譯階段生成的".s"文件轉成目標文件。

4.鏈接(Linking)
由匯編程序生成的目標文件并不能立即就被執行,其中可能還有許多沒有解決的問題。例如,某個源文件中的函數可能引用了另一個源文件中定義的某個符號(如變量或者函數調用等);
在程序中可能調用了某個庫文件中的函數,等等。所有的這些問題,都需要經鏈接程序的處理方能得以解決。

鏈接程序的主要工作就是將有關的目標文件彼此相連接,也即將在一個文件中引用的符號同該符號在另外一個文件中的定義連接起來,使得所有的這些目標文件成為一個能夠誒操作系統裝入執行的統一整體。

根據開發人員指定的同庫函數的鏈接方式的不同,鏈接處理可分為兩種:
(1)靜態鏈接
在這種鏈接方式下,函數的代碼將從其所在地靜態鏈接庫中被拷貝到最終的可執行程序中。
(2)動態鏈接
在此種方式下,函數的代碼被放到稱作是動態鏈接庫或共享對象的某個目標文件中。

經過上述4個過程,C源程序就最終被轉換成可執行文件了。

gcc一些編譯選項:
-std=<標準>         指定輸入源文件遵循的標準
--sysroot=<目錄>  將 <目錄> 作為頭文件和庫文件的根目錄
-B <目錄>            將 <目錄> 添加到編譯器的搜索路徑中
-E                       僅作預處理,不進行編譯、匯編和鏈接
-S                       編譯到匯編語言,不進行匯編和鏈接
-c                       編譯、匯編到目標代碼,不進行鏈接
-o <文件>            輸出到 <文件>

posted on 2011-05-19 15:25 天下 閱讀(567) 評論(0)  編輯 收藏 引用 所屬分類: C/C++

<2012年10月>
30123456
78910111213
14151617181920
21222324252627
28293031123
45678910

導航

統計

常用鏈接

留言簿(4)

隨筆分類(378)

隨筆檔案(329)

鏈接

最新隨筆

搜索

最新評論

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            麻豆亚洲精品| 亚洲国产精品va在看黑人| 亚洲九九精品| 在线精品亚洲| 亚洲精品一区二区三区樱花| 亚洲电影免费| 99视频在线观看一区三区| 日韩午夜av在线| 亚洲视频在线二区| 欧美亚洲在线播放| 久久riav二区三区| 久久综合激情| 亚洲福利在线视频| 亚洲国产一区二区三区高清| 亚洲精品久久| 亚洲欧美久久久| 老色批av在线精品| 欧美日韩在线亚洲一区蜜芽| 国产乱码精品一区二区三区忘忧草| 国产模特精品视频久久久久| 亚洲国产精品精华液网站| 艳女tv在线观看国产一区| 午夜在线精品偷拍| 猛干欧美女孩| 夜夜嗨一区二区三区| 久久精品视频播放| 欧美日韩中文字幕日韩欧美| 国产婷婷精品| 宅男精品视频| 欧美成人在线影院| 亚洲欧美日韩直播| 免费视频一区| 国产午夜精品美女毛片视频| 亚洲乱码精品一二三四区日韩在线 | 日韩亚洲欧美一区二区三区| 羞羞视频在线观看欧美| 欧美+日本+国产+在线a∨观看| 一区二区三区产品免费精品久久75| 久久这里有精品视频| 亚洲精品国产欧美| 久久精品日韩一区二区三区| 欧美午夜一区二区三区免费大片| 在线观看亚洲精品| 久久精品中文| 宅男在线国产精品| 久久gogo国模裸体人体| 一个色综合导航| 欧美激情自拍| 伊人春色精品| 久久久999| 午夜精品久久99蜜桃的功能介绍| 欧美日韩不卡一区| 亚洲精品一区二| 欧美华人在线视频| 久久久亚洲高清| 精品动漫3d一区二区三区| 久久电影一区| 久久riav二区三区| 国产一区二区三区在线免费观看| 欧美一区二区三区在| 亚洲一区二区三区三| 欧美日韩在线第一页| 亚洲精品视频在线观看网站| 欧美激情一区二区三区高清视频| 久久综合免费视频影院| 在线观看日韩精品| 国产精品二区二区三区| 亚洲国产精品综合| 久久狠狠婷婷| 亚洲国产精品欧美一二99| 正在播放欧美视频| 久久久精品一区二区三区| 亚洲一级二级| 久久久免费av| 亚洲视频大全| 久久精品主播| 久久久久成人精品| 久久五月天婷婷| 妖精成人www高清在线观看| 国产一区二区三区在线观看免费 | 久久久午夜视频| 一区二区三区不卡视频在线观看| 国产伦理一区| 亚洲二区三区四区| 中文精品99久久国产香蕉| 欧美日韩综合另类| 久久九九精品| 久久精品国产视频| 亚洲国产欧美在线人成| 欧美日韩在线视频观看| 亚洲欧美成人一区二区三区| 翔田千里一区二区| 狠狠色狠狠色综合系列| 久久www成人_看片免费不卡| 艳妇臀荡乳欲伦亚洲一区| 亚洲一区二区三区免费观看 | 国产一区欧美日韩| 亚洲高清网站| 国产精品v日韩精品| 性欧美videos另类喷潮| 久久久最新网址| 欧美激情乱人伦| 欧美一区二区私人影院日本 | 久久综合九色综合久99| 亚洲五月六月| 噜噜噜在线观看免费视频日韩| 亚洲一级免费视频| 久久精品人人爽| 亚洲综合不卡| 欧美精品18| 免费看亚洲片| 国产精品视频免费| 亚洲精品欧美日韩专区| 韩曰欧美视频免费观看| 中文一区二区在线观看| 91久久久在线| 欧美一区二区精美| 午夜精品久久久久久久99樱桃| 免费成人激情视频| 久久午夜电影网| 国产美女在线精品免费观看| 99国产精品私拍| 亚洲精品欧美一区二区三区| 久久精品91久久香蕉加勒比| 欧美一区二区黄色| 国产精品入口日韩视频大尺度 | 欧美伊人精品成人久久综合97| 在线亚洲电影| 欧美精品激情在线观看| 欧美成人69av| 怡红院精品视频在线观看极品| 亚洲综合激情| 亚洲欧美国产日韩中文字幕| 午夜电影亚洲| 夜夜爽www精品| 久久精品中文字幕一区| 久久久久久夜| 国产日产欧产精品推荐色 | 免费欧美网站| 久久午夜精品一区二区| 国产深夜精品福利| 亚洲一区一卡| 亚洲视频在线观看免费| 欧美日本韩国| 一区二区不卡在线视频 午夜欧美不卡在 | 亚洲国产精品第一区二区| 久久婷婷国产麻豆91天堂| 巨胸喷奶水www久久久免费动漫| 国产真实精品久久二三区| 久久精品国产999大香线蕉| 久久影院午夜论| 亚洲黄色影院| 欧美日韩一区自拍| 亚洲综合三区| 毛片av中文字幕一区二区| 亚洲国产精品热久久| 欧美精品一区二区蜜臀亚洲| 日韩一级大片| 久久久777| 91久久精品国产91久久| 欧美日韩精品在线播放| 亚洲欧美精品| 亚洲国产一区二区a毛片| 在线一区二区视频| 国产人久久人人人人爽| 久久精品一区| 亚洲精品久久7777| 久久www成人_看片免费不卡| 亚洲国产精品成人综合色在线婷婷| 欧美精品一卡| 午夜精品久久久久久久白皮肤| 免费的成人av| 亚洲欧美日产图| 亚洲国产另类久久久精品极度| 欧美视频日韩视频| 欧美综合第一页| 一本色道久久综合狠狠躁篇怎么玩 | 亚洲性视频网站| 狠狠综合久久av一区二区老牛| 欧美激情视频在线免费观看 欧美视频免费一 | 午夜激情久久久| 亚洲国产精品成人va在线观看| 亚洲一区二区伦理| 精品成人乱色一区二区| 国产精品成人免费| 猛干欧美女孩| 久久av一区二区三区| 一本久道久久久| 欧美激情视频一区二区三区不卡| 午夜久久tv| 一区二区免费在线观看| 在线观看日韩国产| 国产亚洲二区| 国产精品久久久对白| 欧美二区在线| 久久久久免费视频| 欧美一二三区精品| 在线亚洲激情| 99国产精品99久久久久久粉嫩 | 亚洲男女毛片无遮挡|