① gcc的使用簡介
GCC默認編譯C程序啊!
要用gcc編譯C++,可以通過-x選項來改變gcc的行為。比如:
gcc -x c++ main.cpp 是編譯C++
gcc -x c main.cpp 是編譯C
gcc -x java T.java 是編譯java
。。。。。。
可以通過 man 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鏈接靜態庫時對待.a文件和.o文件的不同
gcc鏈接靜態庫時對待.a文件和.o文件的不同
為了提高效率,C語言允許將局部變數得值放在CPU中的寄存器中,這種變數叫「寄存器變數」,用關鍵字register作聲明。
【例8.17】使用寄存器變數。
int fac(int n)
{register int i,f=1;
for(i=1;i<=n;i++)
f=f*i
return(f);
}
main()
{int i;
for(i=0;i<=5;i++)
printf("%d!=%d\n",i,fac(i));
}
說明:
1) 只有局部自動變數和形式參數可以作為寄存器變數;
2) 一個計算機系統中的寄存器數目有限,不能定義任意多個寄存器變數;
3) 局部靜態變數不能定義為寄存器變數。
8.9.5 用extern聲明外部變數
外部變數(即全局變數)是在函數的外部定義的,它的作用域為從變數定義處開始,到本程序文件的末尾。如果外部變數不在文件的開頭定義,其有效的作用范圍只限於定義處到文件終了。如果在定義點之前的函數想引用該外部變數,則應該在引用之前用關鍵字extern對該變數作「外部變數聲明」。表示該變數是一個已經定義的外部變數。有了此聲明,就可以從「聲明」處起,合法地使用該外部變數。
【例8.18】用extern聲明外部變數,擴展程序文件中的作用域。
④ C語言 gcc命令 MAC系統
大致上明白,你是想用終端,GCC編譯器編譯C源文件吧?
第一步:你用編輯器例如textwrangler編輯C源文件(不推薦用XCODE,因為目前來說沒必要)
int main(int agrc, char* agrv[]) {
int i = 3;
printf("%d", i);
return 0;
}
編輯完成後,放在桌面上(我只是舉個例子,你可以放在不同的文件目錄下)
第二步:你打開終端,輸入
cd /Users/你電腦用戶名/Desktop/
你可以輸入pwd確認下當前路徑是否是桌面,ls可以顯示當前路徑的所有文件夾。
然後再輸入 cc -c main.c 開始編譯
在桌面上會生成一個main.o的二進制文件。
然後再輸入 cc main.o 鏈接庫
然後會生成一個a.out的最終文件,你可以輸入./a.out運行。
滿意請採納,謝謝
⑤ 有關C和GCC 的
gcc是按照最新的c語言標準的,有一些地方跟平常我們學的C語言教程不同。
好像main 要用int類型返回,你的程序中main 要用 int ,結尾用 return 0 ;
gcc中調用 數學函數庫 要加參數 -im。
⑥ 用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編程的理解大有益處
⑦ linux 怎麼編譯c的源程序的gcc,編譯命令是什麼
編譯方法:格式 gcc [option] [sourcefilename]常用的選項最簡單的是:gcc hello.c默認的情況下將生成a.out的可執行性文件,
只需要在終端上輸入./a.out就可以看到執行的結果,如果你想指定生成目標文件的名字那麼你可以加上 -o選項,命令如下:gcc -o hello hello.c
命令:gcc -c hello hello.c
(7)c語言gcc使用a擴展閱讀:
gcc命令的基本用法
gcc[options][filenames]
其中,filenames為文件名;options為編譯選項。
當不使用任何編譯選項編譯hello.c時,gcc將會自動編譯產生一個a.out的可執行文件:
[root@localhostc]#ls
hello.c
[root@localhostc]#gcchello.c
[root@localhostc]#ls
a.outhello.c
執行:
[root@localhostc]#./a.out
Hello,World!
使用-o編譯選擇,可以為編譯後的文件指定一個名字:
[root@localhostc]#ls
a.outhello.c
[root@localhostc]#gcchello.c-ohello
[root@localhostc]#ls
a.outhellohello.c
執行:
[root@localhostc]#./hello
Hello,World!
注意:使用-o選項時,-o後面必須跟一個文件名,即:-o outfile。
為了便於描述後面的選項,刪除hello和a.out可執行文件。
⑧ C語言 gcc
自己寫個 strlwr 吧
char *strlwr(char *str)
{
char *p;
p = str;
while(*p)
{
if(*p>='A' && *p<='A')
{
*p += 32;
}
p++;
}
}
⑨ 為什麼我用gcc編譯的c語言程序,編譯好後名稱都是a.exe
加-o選項指定 output 的文件名
gcc -o xxx.exe xxx.c