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

            colorful

            zc qq:1337220912

             

            make makefile 學(xué)習(xí)

            http://www.cnblogs.com/napoleon_liu/archive/2011/05/06/2039316.html
            http://www.iteye.com/topic/774919
            http://blog.csdn.net/liangkaiming/article/details/6267357
            http://blog.jobbole.com/44891/


            gcc是C編譯器;g++是C++編譯器;linux下cc一般是一個(gè)符號(hào)連接,指向gcc;gcc和g++都是GUN(組織)的編譯器。而CC則一般是makefile里面的一個(gè)名字,即宏定義,嘿,因?yàn)長(zhǎng)inux/Unix都是大小寫敏感的系統(tǒng),這點(diǎn)一定要注意。

            cc是Unix系統(tǒng)的C Compiler,而gcc則是GNU Compiler Collection,GNU編譯器套裝。gcc原名為Gun C語(yǔ)言編譯器,因?yàn)樗局荒芴幚鞢語(yǔ)言,但gcc很快地?cái)U(kuò)展,包含很多編譯器(C、C++、Objective-C、Ada、Fortran、 Java)。因此,它們是不一樣的,一個(gè)是古老的C編譯器,一個(gè)是GNU編譯器集合,gcc里面的C編譯器比cc強(qiáng)大多了,因此沒(méi)必要用cc。

            下載不到cc的原因在于:cc來(lái)自于昂貴的Unix系統(tǒng),cc是商業(yè)軟件。

            Linux下的cc是gcc符號(hào)連接,可以通過(guò)$ls –l /usr/bin/cc來(lái)簡(jiǎn)單察看,該變量是make程序的內(nèi)建變量,默認(rèn)指向gcc。cc符號(hào)鏈接和變量存在的意義在于源碼的移植性,可以方便的用 gcc來(lái)編譯老的用cc編譯的Unix軟件,甚至連makefile都不用改在,而且也便于Linux程序在Unix下編譯。

             

            誤區(qū)一:gcc只能編譯C代碼,g++只能編譯C++代碼。

            兩者都可以,但請(qǐng)注意:

            (1)后綴為.c的,gcc把它當(dāng)作是C程序,而g++當(dāng)作是c++程序;后綴為.cpp的,兩者都會(huì)認(rèn)為是C++程序,注意,雖然C++是C的超集,但是兩者對(duì)語(yǔ)法的要求是有區(qū)別的。C++的語(yǔ)法規(guī)則更加嚴(yán)謹(jǐn)一些。

            (2)編譯階段,g++會(huì)調(diào)用gcc,對(duì)于C++代碼,兩者是等價(jià)的,但是因?yàn)間cc命令不能自動(dòng)和C++程序使用的庫(kù)聯(lián)接,所以通常用g++來(lái)完成鏈接,為了統(tǒng)一起見(jiàn),干脆編譯/鏈接統(tǒng)統(tǒng)用g++了(編譯階段g++會(huì)反過(guò)來(lái)再調(diào)用gcc),這就給人一種錯(cuò)覺(jué),好像cpp程序只能用g++似的。

             

            誤區(qū)二:gcc不會(huì)定義__cplusplus宏,而g++會(huì)

            實(shí)際上,這個(gè)宏只是標(biāo)志著編譯器將會(huì)把代碼按C還是C++語(yǔ)法來(lái)解釋,如上所述,如果后綴為.c,并且采用gcc編譯器,則該宏就是未定義的,否則,就是已定義。

             

            誤區(qū)三:編譯只能用gcc,鏈接只能用g++

            嚴(yán)格來(lái)說(shuō),這句話不算錯(cuò)誤,但是它混淆了概念,應(yīng)該這樣說(shuō):編譯可以用gcc/g++,而鏈接可以用g++或者gcc -lstdc++。因?yàn)間cc命令不能自動(dòng)和C++程序使用的庫(kù)聯(lián)接,所以通常使用g++來(lái)完成聯(lián)接。但在編譯階段,g++會(huì)自動(dòng)調(diào)用gcc,二者等價(jià)。

             

            C++的編譯器肯定可以編譯C的代碼,注意除了C++對(duì)C的語(yǔ)法擴(kuò)充之外,編譯和鏈接C和C++的標(biāo)準(zhǔn)庫(kù)通常也不一樣呢,用gcc而非g++也編譯了C++的程序就證明了這一點(diǎn)。

             

            注:符號(hào)鏈接是一種特殊類型的文件,它的內(nèi)容只是一個(gè)字符串。它可能指向一個(gè)存在的文件也可能什么都不指向。當(dāng)您在命令行或程序里提到符號(hào)鏈接的時(shí)候,您實(shí)際上進(jìn)入了它指向的文件,前提是這個(gè)文件是存在的。

            posted on 2013-08-07 20:04 多彩人生 閱讀(353) 評(píng)論(0)  編輯 收藏 引用


            只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問(wèn)   Chat2DB   管理


            導(dǎo)航

            統(tǒng)計(jì)

            常用鏈接

            留言簿(3)

            隨筆分類

            隨筆檔案

            搜索

            最新評(píng)論

            閱讀排行榜

            評(píng)論排行榜

            久久久久亚洲国产| 久久精品国产亚洲AV嫖农村妇女 | 久久精品成人国产午夜| 久久精品国产精品亚洲下载 | yellow中文字幕久久网| 亚洲国产精品综合久久网络| 日产精品久久久久久久| 国产精品青草久久久久婷婷| 久久99精品国产麻豆宅宅| 性高湖久久久久久久久AAAAA| 亚洲国产另类久久久精品| 久久亚洲AV无码西西人体| 99久久国产免费福利| 欧美黑人又粗又大久久久| 午夜精品久久影院蜜桃| 国产精品久久久久…| 亚洲精品无码久久久久去q| 品成人欧美大片久久国产欧美... 品成人欧美大片久久国产欧美 | 久久精品一区二区| 青青草原精品99久久精品66| 久久久久久国产精品无码下载 | 国内精品久久久人妻中文字幕 | 久久人人爽人人爽人人片AV麻豆 | 国产精品99久久免费观看| 老司机午夜网站国内精品久久久久久久久| 亚洲AⅤ优女AV综合久久久| 青青草国产精品久久| 国产精品免费久久久久电影网| 热re99久久精品国产99热| 日本免费一区二区久久人人澡| 66精品综合久久久久久久| 爱做久久久久久| 亚洲中文字幕无码久久2017| 国内精品久久久久影院优| 国产巨作麻豆欧美亚洲综合久久| 国产女人aaa级久久久级| 久久99这里只有精品国产| 久久国产精品成人免费| 国内精品久久久久久久影视麻豆| 久久精品综合网| 美女久久久久久|