當前位置:首頁 » 編程軟體 » gcc編譯和調試命令

gcc編譯和調試命令

發布時間: 2023-02-04 22:59:10

『壹』 在linux里,c程序的編輯、編譯、調試的詳細步驟是什麼

(1)用工具寫好C程序...比如vi
(2)打開終端,進入你存放C語言代碼的路徑 例如: cd /opt/
(3)gcc a.c -o abc 意思是:把你的a.c編譯成abc可執行文件
(4)在當前目錄終端下 運行生成的abc,例如: ./abc 前面的.不要掉了
後面可以用gdb進行調試,你可以自己去學習...這是最基本的!!

『貳』 gcc的使用技巧

首先檢查是否在你的機器上安裝了GCC,使用命令:
可用rpm -q gcc檢查。
如果沒有安裝,請依序檢查並安裝下面各RPM
libbinutils
binutils
make
glibc-devel
gcc-cpp
gcc
看下面的例子:test.c #include<stdio.h>intmain(){char*str=IlikeLinux!;printf(%s,str);return0;}使用gcc編譯。輸入gcc -c test.c得到目標文件test.o.-c命令表示對文件進行編譯和匯編。但並不連接。如果再鍵入gcc -o ../bin/test test.o,那麼將得到名為test的可執行文件。其實這兩步可以一氣呵成,gcc ../bin/test test.c.如果程序沒有錯誤就生成了可執行文件。也許你會覺得基於命令行的編譯器比不上如VC之類的集成開發環境,的確gcc的界面要改進,但是你一旦熟練了就會感到。gcc的效率如此之高。可以告訴大家的是Linux底下強大的C/C++集成開發環境Kdevelop和Vc一樣強大,使用了Gcc編譯器。
GNU C編譯器 即gcc是一個功能強大的ANSI C兼容編譯器,你會操作其他操作系統下的一種C編譯器,能很快掌握GCC.
1、使用Gcc,Gcc是基於命令行的,使用時通常後跟一些選項和文件名。Gcc的基本用法如下: gcc [options] [filenames] 命令行選項制定操作將對命令行上的每個給出的文件執行。
2、GCC的常用選項
編譯選項:gcc有超過100個的編譯選項可用。具體的可以使用命令man gcc察看
優化選項:用GCC編譯C/C++代碼時,它會試著用最少的時間完成編譯並且編譯後的代碼易於調試。易於調試意味著編譯後的代碼與源代碼有同樣的執行順序,編譯後的代碼沒有經過優化。有很多的選項可以告訴GCC在耗費更多編譯時間和犧牲易調試性的基礎上產生更小更快的可執行文件。這些選項中最典型的就是-O和-O2。-O選項告訴gcc對源代碼進行基本優化。-O2選項告訴GCC產生盡可能小的和盡可能快的代碼。還有一些很特殊的選項可以通過man gcc察看。
調試和剖析選項:GCC支持數種調試剖析選項。在這些選項中最常用的是-g和-pg.-g選項告訴gcc產生能被GNU調試器(如gdb)使用的調試信息,以便調試用戶的程序。-pg選項告訴gcc在用戶的程序中加入額外的代碼,執行時,產生gprof用的剖析信息以顯示程序的耗時情況。
3、使用gdb
使用方法:在命令行中鍵入gdb並按回車就可以運行gdb了,啟動gdb後,能在命令行上制定很多的選項,也可以下面的方式來運行gdb: gdb filename 用這種方式運行gdb時,能直接指定想要調試的程序。在命令行上健入gdb -h得到一個有關gdb的選項的說明簡單列表。
編譯代碼以供調試,為了使gdb工作,必須使程序在編譯時包含調試信息,調試信息包含程序里的每個變數的類型,在可執行文件里的地址映射以及源代碼的行號。gdb利用這些信息使源代碼和機器碼相關聯。
關於gcc的大體就寫這么多吧,更多的信息可以查找幫助,記得學習Linux的一大武器man或者info命令,下次在介紹一下使用C/C++編寫大型程序的makefile文件和make命令。

『叄』 怎樣調試GCC源碼

一、Linux程序gcc編譯步驟:
Gcc編譯過程主要的4個階段:
l 預處理階段,完成宏定義和include文件展開等工作;(.i)
l 根據編譯參數進行不同程度的優化,編譯成匯編代碼(.s.S)
l 用匯編器把匯編代碼進一步生成目標代碼(.o)
l 用連接器把生成的目標代碼和系統或用戶提供的庫連接起來,生成可執行文件
格式:
l gcc -E test.c//預處理階段
l Gcc -S test.c//編譯階段
l Gcc -c test.c//匯編階段
l Gcc -o test test.c//鏈接階段
二、Linux程序gdb調試步驟:
Gdb的功能:
l 設置斷點
l 監視程序變數的值
l 程序的單步執行
l 顯示、修改變數的值
l 顯示、修改寄存器
l 查看程序的堆棧情況
l 遠程調試
Gdb調試過程:
1、程序經過預處理後,即進入編譯階段,進入編譯階段,首先聲明編譯:
2、格式:gdb -o test test.c -g
3、進入編譯:gdb test
4、顯示需要編譯調試的源程序:l(list)//list filename
5、設置斷點:b(break)行號
6、查看設置的斷點:info b
7、運行調試程序:run
8、跳到下一個斷點:c(continue)
9、單步運行的話使用:n(next)/s(step into)跳到函數體 //區別在與:next執行函數體,而step不執行函數體
10、調試過程中查看某個變數的變化:print i (每次都要手動設置)//display i(設置一次一直尾隨,直到用「undisplay 變數標號」 停止)
11、退出當前的調試使用finish 跳出函數
12、清楚斷點 clear 行號
13、Delete 斷點信息序號// 刪除所有斷點或設置的要刪除的斷點
14、退出調試 q
15、b num if i==20 設置斷點的觸發條件
16、condition num i==50 改變斷點的觸發條件

『肆』 gcc 編譯生成外部調試語法文件

你用的是linux系統吧? binutil包裡面有個objcpy命令:
obj --only-keep-debug [被提取的文件] [提取出來的調試符號文件,建議加.debug後綴]

另外要把調試信息去掉是用strip命令。你可以man下看看。
strip --strip-debug [需要處理的文件]

把debug信息加回去:
obj --add-gnu-debuglink=[debug文件] [需要添加debug信息的文件]

『伍』 怎麼用gcc編譯文件

在終端中輸入 gcc 文件名 -o 目標文件名x0dx0a然後 ./目標文件名 就行了,沒有目標文件名,自動存為 ax0dx0a執行 ./a 就行了。x0dx0ax0dx0a在使用Gcc編譯器的時候,我們必須給出一系列必要的調用參數和文件名稱。GCC編譯器的調用參數大約有100多個,其中多數參數我們可能根本就用不到,這里只介紹其中最基本、最常用的參數。x0dx0aGCC最基本的用法是∶gcc [options] [filenames]x0dx0a其中options就是編譯器所需要的參數,filenames給出相關的文件名稱。x0dx0a-c,只編譯,不連接成為可執行文件,編譯器只是由輸入的.c等源代碼文件生成.o為後綴的目標文件,通常用於編譯不包含主程序的子程序文件。x0dx0a-o output_filename,確定輸出文件的名稱為output_filename,同時這個名稱不能和源文件同名。如果不給出這個選項,gcc就給出預設的可執行文件a.out。x0dx0a-g,產生符號調試工具(GNU的gdb)所必要的符號資訊,要想對源代碼進行調試,我們就必須加入這個選項。x0dx0a-O,對程序進行優化編譯、連接,採用這個選項,整個源代碼會在編譯、連接過程中進行優化處理,這樣產生的可執行文件的執行效率可以提高,但是,編譯、連接的速度就相應地要慢一些。x0dx0a-O2,比-O更好的優化編譯、連接,當然整個編譯、連接過程會更慢。x0dx0a-Idirname,將dirname所指出的目錄加入到程序頭文件目錄列表中,是在預編譯過程中使用的參數。C程序中的頭文件包含兩種情況∶x0dx0aA)#include x0dx0aB)#include 「myinc.h」x0dx0a其中,A類使用尖括弧(< >),B類使用雙引號(「 」)。對於A類,預處理程序cpp在系統預設包含文件目錄(如/usr/include)中搜尋相應的文件,而B類,預處理程序在目標文件的文件夾內搜索相應文件。 x0dx0ax0dx0aGCC執行過程示例x0dx0ax0dx0a示例代碼 a.c:x0dx0a#include x0dx0aint main()x0dx0a{x0dx0aprintf("hello\n");x0dx0a}x0dx0a預編譯過程:x0dx0a這個過程處理宏定義和include,並做語法檢查。x0dx0a可以看到預編譯後,代碼從5行擴展到了910行。x0dx0agcc -E a.c -o a.ix0dx0acat a.c | wc -lx0dx0a5x0dx0acat a.i | wc -lx0dx0a910x0dx0a編譯過程:x0dx0a這個階段,生成匯編代碼。x0dx0agcc -S a.i -o a.sx0dx0acat a.s | wc -lx0dx0a59x0dx0a匯編過程:x0dx0a這個階段,生成目標代碼。x0dx0a此過程生成ELF格式的目標代碼。x0dx0agcc -c a.s -o a.ox0dx0afile a.ox0dx0aa.o: ELF 64-bit LSB relocatable, AMD x86-64, version 1 (SYSV), not strippedx0dx0a鏈接過程:x0dx0a鏈接過程。生成可執行代碼。鏈接分為兩種,一種是靜態鏈接,另外一種是動態鏈接。使用靜態鏈接的好處是,依賴的動態鏈接庫較少,對動態鏈接庫的版本不會很敏感,具有較好的兼容性;缺點是生成的程序比較大。使用動態鏈接的好處是,生成的程序比較小,佔用較少的內存。x0dx0agcc a.o -o ax0dx0a程序運行:x0dx0a./ax0dx0ahellox0dx0a編輯本段x0dx0aGCC編譯簡單例子x0dx0ax0dx0a編寫如下代碼:x0dx0a#include x0dx0aint main()x0dx0a{x0dx0aprintf("hello,world!\n");x0dx0a}x0dx0a執行情況如下:x0dx0agcc -E hello.c -o hello.ix0dx0agcc -S hello.i -o hello.sx0dx0agcc -c hello.s -o hello.ox0dx0agcc hello.c -o hellox0dx0a./hellox0dx0ahello,world!

『陸』 如何用GCC在linux下編譯C語言程序

在Linux下面,如果要編譯一個C語言源程序,我們要使用GNU的gcc編譯器,假設我們有下面一個非常簡單的源程序(hello.c):


int main(int argc,char **argv)


{


printf("Hello Linux ");


}


要編譯這個程序,我們只要在命令行下執行:


gcc -o hello hello.c


gcc 編譯器就會為我們生成一個hello的可執行文件.執行./hello就可以看到程
序的輸出結果了

熱點內容
java返回this 發布:2025-10-20 08:28:16 瀏覽:829
製作腳本網站 發布:2025-10-20 08:17:34 瀏覽:1094
python中的init方法 發布:2025-10-20 08:17:33 瀏覽:799
圖案密碼什麼意思 發布:2025-10-20 08:16:56 瀏覽:964
怎麼清理微信視頻緩存 發布:2025-10-20 08:12:37 瀏覽:855
c語言編譯器怎麼看執行過程 發布:2025-10-20 08:00:32 瀏覽:1207
郵箱如何填寫發信伺服器 發布:2025-10-20 07:45:27 瀏覽:428
shell腳本入門案例 發布:2025-10-20 07:44:45 瀏覽:308
怎麼上傳照片瀏覽上傳 發布:2025-10-20 07:44:03 瀏覽:983
python股票數據獲取 發布:2025-10-20 07:39:44 瀏覽:952