導航:首頁 > 編程語言 > gcc下編程

gcc下編程

發布時間:2023-06-05 04:57:31

① 如何在ubuntu下使用gcc命令編程

  1. 一步到位的編譯指令是:gcc test.c -o test

  2. 實質上,上述編譯過程是分為四個階段進行的,即預處理(也稱預編譯,Preprocessing)、編譯(Compilation)、匯編 (Assembly)和連接(Linking)。

    預處理: gcc -E test.c -o test.i 或 gcc -E test.c

    編譯為匯編代碼:gcc -S test.i -o test.s

    匯編:gcc -c test.s -o test.o

    連接:gcc test.o -o test

② gcc編程,源代碼放在哪裡呢怎麼使用GCC編譯文件呢說詳細點,謝謝。

源代碼放在哪裡都可以。
比如源文件叫source.c的話,編譯方法就是在源文件所在的目錄下執行下面命令:
gcc -o target source.c
target就是你編譯後的可執行文件,名字取什麼都可以。
另外,糾正個小問題,gcc編程這種說法不太准確,gcc是編譯器,不是編程語言。

③ gcc是什麼

GCC是一個用於linux系統下編程的編譯器
是一個用於編程開發的自由編譯器。最初,GCC只是一個C語言編譯器,它是GNU C Compiler 的英文縮寫。隨著眾多自由開發者的加入和GCC自身的發展,如今的GCC已經是一個包含眾多語言的編譯器了。其中包括 C,C++,Ada,Object C和Java等。所以,GCC也由原來的GNU C Compiler變為GNU Compiler Collection。也就是 GNU編譯器家族的意思。當然,如今的GCC藉助於它的特性,具有了交叉編譯器的功能,即在一個平台下編譯另一個平台的代碼。

④ 如何用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就可以看到程
序的輸出結果了

⑤ 用gcc編譯器C語言程序的技巧

方法/步驟
1、編寫c代碼,並輸入以下代碼,生成文件hello.c
[root@wahoo
test]#
vim
hello.c
#include
<stdio.h>
#define
DISPLAY
"hello
c!"
int
main(void)
{
printf("%s\n",
DISPLAY
);
return
0;
}
ZZ(說明:ZZ當前文件進行快速保存操作)
2、預編譯(Preprocessing)
會對各種預處理指令(#include
#define
#ifdef
等#開始的代碼行)進行處理,刪除注釋和多餘的空白字元,生成一份新的代碼
[root@wahoo
test]#gcc
-E
hello.c
-o
hello.i
E
參數
通知gcc對目標文件進行預編譯,這里是對文件hello.c文件
o
參數
是對命令輸出結果進行導入操作,這里是把
gcc
-E
hello.c
操作結果輸出到文件hello.i(命名要自定義)中進行保存
這個命令執行完後我們目錄下多了一個文件hello.i,你可以查閱一下文件的內容。
3、編譯(Compilation)
對代碼進行語法、語義分析和錯誤判斷,生成匯編代碼文件
[root@wahoo
test]#gcc
-S
hello.i
-o
hello.s
S
參數
通知gcc對目標文件進行編譯,這里是對文件hello.i文件
通過這一步我們知道
C語言跟匯編的
關系,至於他們之前是如何進行轉換的,大家可以進行更深入的學習與探討。
此時目錄下多了一個hello.s文件,內容如圖
4、匯編(Assembly)
把匯編代碼轉換與計算機可認識的二進制文件,要知道計算機只認識0和1呢
[root@wahoo
test]#gcc
-c
hello.s
-o
hello.o
c
參數
通知gcc對目標文件執行指令轉換操作
此步驟我們得到文件hello.o
大家也同樣打開文件查看一下,這個文件裡面幾乎沒幾個字元大家能看懂,這就對了,但大家可以通過這種方法將其轉化為我們可讀的形式:
[root@wahoo
test]#readelf
-a
hello.o
5、鏈接(Linking/Build)
通俗的講就是把多個*.o文件合並成一個可執行文件,二進制指令文件
[root@wahoo
test]#gcc
hello.o
-o
hello
這里我們就得到了一個可以直接在系統下執行的文件
hello
我們也可以對這個文件進行readelf操作,也可以進行二進制指令轉匯編的操作
[root@wahoo
test]#objmp
-d
hello
6、程序運行
[root@wahoo
test]#./hello
hello
c!
7、總結:gcc
編譯c程序的主要過程包括
預編譯->編譯->匯編->連接
四個過程,每個過程都分別進行不同的處理,了解了這其中的一些原理,對c編程的理解大有益處

⑥ 如何使用gcc在EditPlus編輯器下對GTK程序進行靜態編譯

GTK的安裝

sudo apt-get install vim #使用vim來編寫代碼,當然您可以使用任何自己喜歡的編輯器

sudo apt-get install build-essential #這將安裝gcc/g++/gdb/make 等基本編程工具

sudo apt-get install gnome-core-devel #這將安裝 libgtk2.0-dev libglib2.0-dev 等開發相關的庫文件

sudo apt-get install pkg-config #用於在編譯GTK程序時自動找出頭文件及庫文件位置

sudo apt-get install devhelp #這將安裝 devhelp GTK文檔查看程序

sudo apt-get install libglib2.0-doc libgtk2.0-doc #這將安裝 gtk/glib 的API參考手冊及其它幫助文檔

sudo apt-get instal glade libglade2-dev #這將安裝基於GTK的界面GTK是開發Gnome窗口的c/c++語言圖形庫。在Ubuntu的機器上折騰了一下,復制了網上教程的代碼在本機上編譯。代碼的文件名:t1.c。按照教程,用以下命令編譯:

gcc t1.c 'pkg-config --cflags --libs gtk+-2.0`

編譯結果:找不到gtk/gtk.h。

因為我的Ubuntu是Gnome系統,所以我以為gtk+2.0的開發程序(頭文件和庫文件)應該已經安裝在計算機上了。其實不然,如果在Ubuntu 上開發gtk+2.0的程序,需要安裝相應的頭文件和庫。在控制台窗口輸入sudo apt-get install libgtk2.0*, gtk+2.0所需的所有文件統通下載安裝完畢。再次應用編譯命令:gcc t1.c 'pkg-config --cflags --libs gtk+-2.0,編譯通過,運行。

pkg-config是一個用來管理包的程序,在控制台輸入 pkg-config --cflags --libs gtk+-2.0 的運行結果:

-DPNG_NO_MMX_CODE -I/usr/include/gtk-2.0 -I/usr/lib/gtk-2.0/include -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/freetype2 -I/usr/include/libpng12 -lgtk-x11-2.0 -lgdk-x11-2.0 -latk-1.0 -lgdk_pixbuf-2.0 -lm -lpangocairo-1.0 -lfontconfig -lXext -lXrender -lXinerama -lXi -lXrandr -lXcursor -lXcomposite -lXdamage -lpango-1.0 -lcairo -lX11 -lXfixes -lgobject-2.0 -lgmole-2.0 -ldl -lglib-2.0

可以看出,輸出的文本包括了gcc編譯gtk+2.0所需要的所有選項(頭文件目錄和庫文件)。

這里有一點需要注意, gcc t1.c `pkg-config --cflags --libs gtk+-2.0`, pkg-config --cflags --libs gtk+-2.0兩側的引號並不是真正的引號,而是鍵盤數字件那一行,最左邊的那個字元。如果錯用了單引號,gcc無法使用 pkg-config --cflags --libs gtk+-2.0產生的文本作為編譯選項。構造程序。
$ gcc gtkhello.c -o gtktest `pkg-config --cflags --libs gtk+-2.0`
$ ./gtktest
gcc gtk1.c `pkg-config --cflags --libs gtk+-2.0`

//////////////////////////////////////////////////////////////////////////////////////////////////////

首先獲得超級用戶許可權

apt-get install vim #使用vim來編寫代碼,當然您可以使用任何自己喜歡的編輯器
apt-get install build-essential #這將安裝gcc/g++/gdb/make 等基本編程工具
apt-get install gnome-core-devel #這將安裝 libgtk2.0-dev libglib2.0-dev 等開發相關的庫文件
apt-get install pkg-config #用於在編譯GTK程序時自動找出頭文件及庫文件位置
apt-get install devhelp #這將安裝 devhelp GTK文檔查看程序
apt-get install libglib2.0-doc libgtk2.0-doc #這將安裝 gtk/glib 的API參考手冊及其它幫助文檔
apt-get instal glade libglade2-dev #這將安裝基於GTK的界面構造程序

都是安裝好後測試一下程序hello.c

#include <gtk/gtk.h> ----------我編譯時老是說找不到頭文件,後來在/usr/include里找到gtk-2.0/gtk/gtk.h,原來是路徑錯誤,最後將頭文件路徑修改為<gtk-2.0/gtk/gtk.h>,終於好了!

void hello(GtkWidget *widget,gpointer data)
{
g_print("Hello 大家好\n");
}
gint delete_event(GtkWidget *widget,GdkEvent *event,gpointer data)
{
g_print ("delete event occurred\n");
return(TRUE);
}
void destroy(GtkWidget *widget,gpointer data)
{
gtk_main_quit();
}
int main( int argc, char *argv[] )
{
GtkWidget *window;
GtkWidget *button;
gtk_init (&argc, &argv);
window=gtk_window_new (GTK_WINDOW_TOPLEVEL);
gtk_signal_connect (GTK_OBJECT(window),"delete_event",GTK_SIGNAL_FUNC(delete_event),NULL);
gtk_signal_connect (GTK_OBJECT (window), "destroy",GTK_SIGNAL_FUNC (destroy), NULL);
gtk_container_set_border_width (GTK_CONTAINER (window), 10);
button = gtk_button_new_with_label ("Hello 大家好");
gtk_signal_connect (GTK_OBJECT (button), "clicked",GTK_SIGNAL_FUNC (hello), NULL);
gtk_signal_connect_object (GTK_OBJECT (button), "clicked",GTK_SIGNAL_FUNC(gtk_widget_destroy),GTK_OBJECT (window));
gtk_container_add (GTK_CONTAINER (window), button);
gtk_widget_show (button);
gtk_widget_show (window); /*顯示一個窗口*/
gtk_main(); /*進入主循環*/
return(0);
}

最後編譯運行:

$ gcc hello.c -o hello `pkg-config --cflags --libs gtk+-2.0`
$ . /hello

////////////////////////////////////////////////////////////////////

GTK的安裝

sudo apt-get install vim #使用vim來編寫代碼,當然您可以使用任何自己喜歡的編輯器

sudo apt-get install build-essential #這將安裝gcc/g++/gdb/make 等基本編程工具

sudo apt-get install gnome-core-devel #這將安裝 libgtk2.0-dev libglib2.0-dev 等開發相關的庫文件

sudo apt-get install pkg-config #用於在編譯GTK程序時自動找出頭文件及庫文件位置

sudo apt-get install devhelp #這將安裝 devhelp GTK文檔查看程序

sudo apt-get install libglib2.0-doc libgtk2.0-doc #這將安裝 gtk/glib 的API參考手冊及其它幫助文檔

sudo apt-get instal glade libglade2-dev #這將安裝基於GTK的界面GTK是開發Gnome窗口的c/c++語言圖形庫。在Ubuntu的機器上折騰了一下,復制了網上教程的代碼在本機上編譯。代碼的文件名:t1.c。按照教程,用以下命令編譯:

gcc t1.c 'pkg-config --cflags --libs gtk+-2.0`

編譯結果:找不到gtk/gtk.h。

因為我的Ubuntu是Gnome系統,所以我以為gtk+2.0的開發程序(頭文件和庫文件)應該已經安裝在計算機上了。其實不然,如果在Ubuntu 上開發gtk+2.0的程序,需要安裝相應的頭文件和庫。在控制台窗口輸入sudo apt-get install libgtk2.0*, gtk+2.0所需的所有文件統通下載安裝完畢。再次應用編譯命令:gcc t1.c 'pkg-config --cflags --libs gtk+-2.0,編譯通過,運行。

pkg-config是一個用來管理包的程序,在控制台輸入 pkg-config --cflags --libs gtk+-2.0 的運行結果:

-DPNG_NO_MMX_CODE -I/usr/include/gtk-2.0 -I/usr/lib/gtk-2.0/include -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/freetype2 -I/usr/include/libpng12 -lgtk-x11-2.0 -lgdk-x11-2.0 -latk-1.0 -lgdk_pixbuf-2.0 -lm -lpangocairo-1.0 -lfontconfig -lXext -lXrender -lXinerama -lXi -lXrandr -lXcursor -lXcomposite -lXdamage -lpango-1.0 -lcairo -lX11 -lXfixes -lgobject-2.0 -lgmole-2.0 -ldl -lglib-2.0

可以看出,輸出的文本包括了gcc編譯gtk+2.0所需要的所有選項(頭文件目錄和庫文件)。

這里有一點需要注意, gcc t1.c `pkg-config --cflags --libs gtk+-2.0`, pkg-config --cflags --libs gtk+-2.0兩側的引號並不是真正的引號,而是鍵盤數字件那一行,最左邊的那個字元。如果錯用了單引號,gcc無法使用 pkg-config --cflags --libs gtk+-2.0產生的文本作為編譯選項。構造程序。

$ gcc gtkhello.c -o gtktest `pkg-config --cflags --libs gtk+-2.0`
$ ./gtktest

gcc gtk1.c `pkg-config --cflags --libs gtk+-2.0`

閱讀全文

與gcc下編程相關的資料

熱點內容
windowsrar命令 瀏覽:377
單片機編程語言有哪些 瀏覽:441
蘋果安卓系統筆記本怎麼設置密碼 瀏覽:982
只能加密不能解密有什麼用 瀏覽:239
怎麼製造app 瀏覽:121
電腦解壓死機了怎麼辦 瀏覽:607
歐洲伺服器雲進銷存 瀏覽:192
程序員python和java 瀏覽:949
文件夾怎麼插入幻燈 瀏覽:282
帶孩子到崩潰怎麼解壓 瀏覽:63
戰地一被踢出伺服器會顯示什麼 瀏覽:837
怎麼看手機上所有的app 瀏覽:365
網路拚命令怎麼拼 瀏覽:836
產品經理和程序員優先選哪個 瀏覽:393
樸素的app應用怎麼推廣 瀏覽:586
怎麼查校園卡app專屬流量 瀏覽:437
少兒編程教育培訓視頻 瀏覽:562
華為平板如何裝兩個一樣的app 瀏覽:728
程序員與劫匪 瀏覽:623
協同演化演算法及其在數據挖掘中的應用 瀏覽:225