亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? compiler.html

?? 這是一個介紹 linux 編程知識的文章。
?? HTML
字號:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN"><HTML><HEAD>    <TITLE>Linux上的C/C++編譯器和調試器</TITLE>    <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=gb_2312-80">    <META NAME="GENERATOR" CONTENT="StarOffice/5.1 (Linux)">    <META NAME="AUTHOR" CONTENT="Yongming Wei">    <META NAME="CREATED" CONTENT="20000329;17342600">    <META >    <STYLE>    <!--        H1 { color: #ffff00 }        H2 { color: #ffff00 }        H3 { color: #ff00ff }        H4 { color: #ffff00 }        TD P { color: #b880b8 }        LI { color: #ffffff }        P { color: #00ffff }        A:link { color: #00b8ff }        A:visited { color: #ff3366 }    -->    </STYLE></HEAD><BODY TEXT="#ffff00" LINK="#00b8ff" VLINK="#ff3366" BACKGROUND="velvet.jpg"><A HREF="prog_script.html"><IMG SRC="prev.gif" ALT="Previous"></A><A HREF="make.html"><IMG SRC="next.gif" ALT="Next"></A><A HREF="index.html"><IMG SRC="toc.gif" ALT="Contents"></A><H1 ALIGN=CENTER>1.8&nbsp;&nbsp;Linux 上的 C/C++ 編譯器和調試器<BR><BR></H1><UL>    <LI><P>運行 gcc/egcs</LI>    <LI><P>gcc/egcs 的主要選項</LI>    <LI><P>gdb</LI>    <LI><P>gdb 的常用命令</LI>    <LI><P>gdb 使用范例</LI>    <LI><P>其他程序/庫工具 (ar, objdump, nm, size, strings, strip, ...)</LI></UL><H3>1.8.1&nbsp;&nbsp;運行 gcc/egcs</H3><P>Linux 中最重要的軟件開發工具是 GCC。GCC 是 GNU 的 C 和 C++ 編譯器。實際上,GCC 能夠編譯三種語言:C、C++ 和 Object C(C 語言的一種面向對象擴展)。利用 gcc 命令可同時編譯并連接 C 和 C++ 源程序。</P><P>#DEMO#: hello.c</P><PRE>如果你有兩個或少數幾個 C 源文件,也可以方便地利用 GCC 編譯、連接并生成可執行文件。例如,假設你有兩個源文件 main.c 和 factorial.c 兩個源文件,現在要編譯生成一個計算階乘的程序。清單 factorial.c-----------------------#include <stdio.h>#include <stdlib.h>int factorial (int n){    if (n <= 1)        return 1;    else        return factorial (n - 1) * n;}----------------------------------------------清單  main.c-----------------------#include <stdio.h>#include <stdlib.h>int factorial (int n);int main (int argc, char **argv){    int n;    if (argc < 2) {        printf ("Usage: %s n\n", argv [0]);        return -1;    }    else {        n = atoi (argv[1]);        printf ("Factorial of %d is %d.\n", n, factorial (n));    }    return 0;}-----------------------利用如下的命令可編譯生成可執行文件,并執行程序:$ gcc -o factorial main.c factorial.c$ ./factorial 5Factorial of 5 is 120.</PRE><PRE>GCC 可同時用來編譯 C 程序和 C++ 程序。一般來說,C 編譯器通過源文件的后綴名來判斷是 C 程序還是 C++ 程序。在 Linux 中,C 源文件的后綴名為 .c,而 C++ 源文件的后綴名為 .C 或 .cpp。但是,gcc 命令只能編譯 C++ 源文件,而不能自動和 C++ 程序使用的庫連接。因此,通常使用 g++ 命令來完完成 C++ 程序的編譯和連接,該程序會自動調用 gcc 實現編譯。假設我們有一個如下的 C++ 源文件(hello.C):#include <iostream.h>void main (void){    cout << "Hello, world!" << endl;}則可以如下調用 g++ 命令編譯、連接并生成可執行文件:$ g++ -o hello hello.C$ ./helloHello, world!</PRE><H3>1.8.2&nbsp;&nbsp;gcc/egcs 的主要選項</H3><PRE>                表 1-3  gcc 命令的常用選項選項                解釋-ansi               只支持 ANSI 標準的 C 語法。這一選項將禁止 GNU C 的某些特色,                    例如 asm 或 typeof 關鍵詞。-c                  只編譯并生成目標文件。-DMACRO             以字符串“1”定義 MACRO 宏。-DMACRO=DEFN        以字符串“DEFN”定義 MACRO 宏。-E                  只運行 C 預編譯器。-g                  生成調試信息。GNU 調試器可利用該信息。-IDIRECTORY         指定額外的頭文件搜索路徑DIRECTORY。-LDIRECTORY         指定額外的函數庫搜索路徑DIRECTORY。-lLIBRARY           連接時搜索指定的函數庫LIBRARY。-m486               針對 486 進行代碼優化。-o FILE             生成指定的輸出文件。用在生成可執行文件時。-O0                 不進行優化處理。-O 或 -O1           優化生成代碼。-O2                 進一步優化。-O3                 比 -O2 更進一步優化,包括 inline 函數。-shared             生成共享目標文件。通常用在建立共享庫時。-static             禁止使用共享連接。-UMACRO             取消對 MACRO 宏的定義。-w                  不生成任何警告信息。-Wall               生成所有警告信息。</PRE><P></P><H3>1.8.3&nbsp;&nbsp;gdb</H3><PRE>GNU 的調試器稱為 gdb,該程序是一個交互式工具,工作在字符模式。在 X Window 系統中,有一個 gdb 的前端圖形工具,稱為 xxgdb。gdb 是功能強大的調試程序,可完成如下的調試任務:* 設置斷點;* 監視程序變量的值;* 程序的單步執行;* 修改變量的值。在可以使用 gdb 調試程序之前,必須使用 -g 選項編譯源文件。可在 makefile 中如下定義 CFLAGS 變量:CFLAGS = -g運行 gdb 調試程序時通常使用如下的命令:gdb progname在 gdb 提示符處鍵入help,將列出命令的分類,主要的分類有:* aliases:命令別名* breakpoints:斷點定義;* data:數據查看;* files:指定并查看文件;* internals:維護命令;* running:程序執行;* stack:調用棧查看;* statu:狀態查看;* tracepoints:跟蹤程序執行。鍵入 help 后跟命令的分類名,可獲得該類命令的詳細清單。</PRE><P>#DENO#</P><H3>1.8.4&nbsp;&nbsp;gdb 的常用命令</H3><PRE>                表 1-4  常用的 gdb 命令命令                        解釋break NUM               在指定的行上設置斷點。bt                      顯示所有的調用棧幀。該命令可用來顯示函數的調用順序。clear                   刪除設置在特定源文件、特定行上的斷點。其用法為:clear FILENAME:NUM。continue                繼續執行正在調試的程序。該命令用在程序由于處理信號或斷點而                        導致停止運行時。display EXPR            每次程序停止后顯示表達式的值。表達式由程序定義的變量組成。file FILE               裝載指定的可執行文件進行調試。help NAME               顯示指定命令的幫助信息。info break              顯示當前斷點清單,包括到達斷點處的次數等。info files              顯示被調試文件的詳細信息。info func               顯示所有的函數名稱。info local              顯示當函數中的局部變量信息。info prog               顯示被調試程序的執行狀態。info var                顯示所有的全局和靜態變量名稱。kill                    終止正被調試的程序。list                    顯示源代碼段。make                    在不退出 gdb 的情況下運行 make 工具。next                    在不單步執行進入其他函數的情況下,向前執行一行源代碼。print EXPR              顯示表達式 EXPR 的值。<P></P><H3>1.8.5&nbsp;&nbsp;gdb 使用范例</H3><PRE>-----------------清單  一個有錯誤的 C 源程序 bugging.c-----------------#include <stdio.h>#include <stdlib.h>static char buff [256];static char* string;int main (){    printf ("Please input a string: ");    gets (string);    printf ("\nYour string is: %s\n", string);}-----------------上面這個程序非常簡單,其目的是接受用戶的輸入,然后將用戶的輸入打印出來。該程序使用了一個未經過初始化的字符串地址 string,因此,編譯并運行之后,將出現 Segment Fault 錯誤:$ gcc -o test -g test.c$ ./testPlease input a string: asfdSegmentation fault (core dumped)為了查找該程序中出現的問題,我們利用 gdb,并按如下的步驟進行:1.運行 gdb bugging 命令,裝入 bugging 可執行文件;2.執行裝入的 bugging 命令;3.使用 where 命令查看程序出錯的地方;4.利用 list 命令查看調用 gets 函數附近的代碼;5.唯一能夠導致 gets 函數出錯的因素就是變量 string。用 print 命令查看 string 的值;6.在 gdb 中,我們可以直接修改變量的值,只要將 string 取一個合法的指針值就可以了,為此,我們在第 11 行處設置斷點;7.程序重新運行到第 11 行處停止,這時,我們可以用 set variable 命令修改 string 的取值;8.然后繼續運行,將看到正確的程序運行結果。</PRE><P>#DEMO#</P><H3>1.8.6&nbsp;&nbsp;其他程序/庫工具</H3><P>strip:</P><P>nm:</P><P>size:</P><P>string:</P><P><BR><BR></P><P ALIGN=CENTER><IMG SRC="striped.gif" NAME="Ruler" ALIGN=BOTTOM WIDTH=532 HEIGHT=13 BORDER=0></P><P><BR><BR></P><A HREF="prog_script.html"><IMG SRC="prev.gif" ALT="Previous"></A><A HREF="make.html"><IMG SRC="next.gif" ALT="Next"></A><A HREF="index.html"><IMG SRC="toc.gif" ALT="Contents"></A></BODY></HTML>

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
99re在线视频这里只有精品| 日韩一区二区电影在线| 欧美裸体一区二区三区| 国产亚洲精品久| 亚洲国产成人va在线观看天堂| 国产一区二区三区黄视频| 色综合久久久久| 亚洲国产成人一区二区三区| 捆绑调教一区二区三区| 欧美系列一区二区| 国产精品另类一区| 欧美a级理论片| 欧美日韩情趣电影| 一区二区三区资源| 国产成人在线电影| 久久丝袜美腿综合| 精品系列免费在线观看| 欧美日韩aaaaa| 亚洲自拍另类综合| 日本精品一级二级| 一区二区在线电影| 91蜜桃婷婷狠狠久久综合9色| 久久久精品欧美丰满| 九九热在线视频观看这里只有精品| 欧美视频一区在线| 一区二区三区欧美久久| 色综合网站在线| 亚洲黄色小视频| 欧美艳星brazzers| 亚洲成人www| 欧美日韩精品专区| 偷窥少妇高潮呻吟av久久免费| 色猫猫国产区一区二在线视频| 日韩一区中文字幕| 日本高清免费不卡视频| 一级特黄大欧美久久久| 欧美亚洲综合另类| 午夜激情久久久| 51午夜精品国产| 久久精品国产在热久久| 久久亚洲一区二区三区明星换脸| 老司机精品视频线观看86| 久久综合中文字幕| 粉嫩aⅴ一区二区三区四区 | 国产精品嫩草久久久久| 成人在线综合网站| 亚洲伊人色欲综合网| 欧美一区二区在线不卡| 久久精品国产一区二区三| 久久久www成人免费无遮挡大片 | 三级在线观看一区二区| 欧美va亚洲va| 成人黄色一级视频| 亚洲综合图片区| 欧美电影免费观看高清完整版在| 狠狠色丁香久久婷婷综合丁香| 中文字幕国产精品一区二区| 91丝袜高跟美女视频| 午夜av一区二区三区| 337p粉嫩大胆噜噜噜噜噜91av| 国产黄色91视频| 亚洲妇女屁股眼交7| 久久中文字幕电影| 成人av动漫网站| 日本不卡免费在线视频| 中文字幕精品综合| 欧美精品乱码久久久久久按摩| 国产麻豆成人精品| 亚洲成人资源在线| 久久精品一区蜜桃臀影院| 91成人在线免费观看| 国内精品在线播放| 亚洲女爱视频在线| 久久综合色8888| 欧美网站一区二区| 懂色av中文字幕一区二区三区| 一区二区日韩电影| 国产日产欧美一区二区三区 | 波多野结衣欧美| 日本不卡视频在线观看| 国产精品家庭影院| 日韩美女视频在线| 欧美日韩久久久| 99久久精品免费看| 国产精品1区2区| 日韩电影在线一区| 亚洲靠逼com| 欧美激情一区二区三区四区| 91麻豆精品国产无毒不卡在线观看| 成人avav影音| 黄页网站大全一区二区| 亚洲高清免费观看| 亚洲激情第一区| 国产精品国模大尺度视频| 日韩欧美aaaaaa| 日韩一区二区在线看| 色88888久久久久久影院野外| 国产伦精品一区二区三区免费| 日韩和欧美一区二区| 亚洲综合区在线| 亚洲男人的天堂一区二区 | 丰满少妇在线播放bd日韩电影| 肉肉av福利一精品导航| 亚洲影院久久精品| 亚洲精品国久久99热| 最新国产成人在线观看| 国产网站一区二区| 久久精品亚洲国产奇米99| 欧美第一区第二区| 日韩一区二区免费视频| 91精品国产高清一区二区三区 | 久久久亚洲精华液精华液精华液 | 欧美日韩免费一区二区三区 | 一本久久综合亚洲鲁鲁五月天| 国产suv精品一区二区883| 国产剧情一区二区| 国产一区二区剧情av在线| 国产呦萝稀缺另类资源| 国产在线视频一区二区| 国产一区91精品张津瑜| 国产精品自在在线| 国产不卡视频在线播放| 不卡在线观看av| 99视频精品在线| 色综合久久九月婷婷色综合| 欧美在线观看18| 制服丝袜成人动漫| 欧美一区二区三区免费在线看| 日韩一区二区三| 国产午夜精品福利| 亚洲视频每日更新| 亚洲国产精品久久久久秋霞影院| 五月婷婷久久综合| 国产乱子轮精品视频| 99久久国产综合精品色伊| 欧美艳星brazzers| 精品国产区一区| 国产精品免费av| 亚洲成国产人片在线观看| 极品销魂美女一区二区三区| 夫妻av一区二区| 精品视频在线看| 久久综合色鬼综合色| 亚洲丝袜制服诱惑| 无吗不卡中文字幕| 国产成人综合网| 欧美亚洲图片小说| 欧美va天堂va视频va在线| 中文字幕中文乱码欧美一区二区| 亚洲高清久久久| 国产一区二区成人久久免费影院 | 亚洲国产综合色| 美女一区二区三区| 99re在线精品| 精品欧美一区二区在线观看| 国产精品成人免费在线| 首页欧美精品中文字幕| 成人小视频在线| 欧美一区二区三区不卡| 国产精品久久久久久户外露出| 亚洲国产精品久久一线不卡| 国产成人精品亚洲日本在线桃色| 欧美亚洲丝袜传媒另类| 国产精品三级在线观看| 青青草97国产精品免费观看 | 午夜精品成人在线视频| 精品一区二区三区在线观看| 一本大道久久精品懂色aⅴ| 久久综合九色欧美综合狠狠| 午夜日韩在线电影| 不卡大黄网站免费看| 久久久久亚洲蜜桃| 男人操女人的视频在线观看欧美| 成人动漫精品一区二区| 精品蜜桃在线看| 日日夜夜一区二区| 91视频91自| 欧美经典一区二区| 久久精品国产**网站演员| 欧美三级在线视频| 亚洲综合一区在线| 91丨porny丨在线| 国产精品传媒视频| 成人午夜免费电影| 久久久91精品国产一区二区精品| 午夜影院久久久| 欧美亚洲综合网| 亚洲超丰满肉感bbw| 欧美又粗又大又爽| 亚洲自拍欧美精品| 一本大道久久a久久综合| 亚洲婷婷综合色高清在线| 成人高清av在线| 国产精品成人在线观看| 成人免费视频一区二区| 久久久久97国产精华液好用吗| 精品一区二区免费在线观看| 日韩亚洲欧美一区二区三区| 理论片日本一区| 欧美成va人片在线观看|