GCC,全稱為GNU Compiler Collection,目前可以編譯的語言包括:C,C++,Objective-C,Fortran,Java, Ada。GCC是GNU公社的一個項目。是一個用于編程開�(fā)的自由編譯器。最初,GCC只是一個C語言編譯�,他是GNU C Compiler 的英文縮�。隨著眾多自由開�(fā)者的加入和GCC自身的發(fā)展,如今的GCC以經(jīng)是一個包含眾多語言的編譯器��
gcc所遵循的部分約定規(guī)則:
.c為后綴的文件,C語言源代碼文��
.a為后綴的文件,是由目標文件構(gòu)成的檔案庫文��
.C�.cc�.cxx 為后綴的文件,是C++源代碼文��
.h為后綴的文件,是程序所包含的頭文件�
.i 為后綴的文件,是已經(jīng)預處理過的C源代碼文��
.ii為后綴的文件,是已經(jīng)預處理過的C++源代碼文��
.m為后綴的文件,是Objective-C源代碼文件;
.o為后綴的文件,是編譯后的目標文件�
.s為后綴的文件,是匯編語言源代碼文��
.S為后綴的文件,是�(jīng)過預編譯的匯編語言源代碼文��
GCC 選項
GCC 有超�100個的編譯選項可用. 這些選項中的許多你可能永遠都不會用到, 但一些主要的選項將會頻繁用到. 很多� GCC 選項包括一個以上的字符. 因此你必須為每個選項指定各自的連字�, 并且就象大多�(shù) Linux 命令一樣你不能在一個單獨的連字符后跟一組選�. 例如, 下面的兩個命令是不同�:
gcc -p -g test.c
gcc -pg test.c
條命令告� GCC 編譯 test.c 時為 prof 命令建立剖析(profile)信息并且把調(diào)試信息加入到可執(zhí)行的文件�. 第二條命令只告訴 GCC � gprof 命令建立剖析信息.
當你不用任何選項編譯一個程序時, GCC 將會建立(假定編譯成功)一個名� a.out 的可�(zhí)行文�. 例如, 下面的命令將在當前目錄下�(chǎn)生一個叫 a.out 的文�:
gcc test.c
你能� -o 編譯選項來為將產(chǎn)生的可執(zhí)行文件指定一個文件名來代� a.out. 例如, 將一個叫 count.c � C 程序編譯為名� count 的可�(zhí)行文�, 你將輸入下面的命�:
gcc -o count count.c
注意: 當你使用 -o 選項�, -o 后面必須跟一個文件名. -c 只編譯并生成目標文件�
--------------------------------------------------------------------------------
gcc and g++分別是gnu的c & c++編譯� gcc/g++在執(zhí)行編譯工作的時�,總共需�4�
1.預處�,生成.i的文� [預處理器cpp]
2.將預處理后的文件不轉(zhuǎn)換成匯編語言,生成文件.s[編譯器egcs]
3.有匯編變?yōu)槟繕舜a(機器代碼)� �.o的文件[匯編器as]
4.連接目標代碼,生成可執(zhí)行程序[鏈接器ld]
[參數(shù)詳解]
-x language filename
設定文件所使用的語言,使后綴名無效,對以后的多個有�.也就是根�(jù)約定C語言的后
綴名稱是.c的,而C++� 后綴名是.C或�.cpp,如果你很個�,決定你的C代碼文件的后�
名是.pig 哈哈,那你就要用這個參�(shù),這個參�(shù)對他后面的文件名都起作用,除非到�
下一個參�(shù)的使��
可以使用的參�(shù)嗎有下面的這些
`c', `objective-c', `c-header', `c++', `cpp-output', `assembler', and `a
ssembler-with-cpp'.
看到英文,應該可以理解的�
例子用法:
gcc -x c hello.pig
-x none filename
關掉上一個選項,也就是讓gcc根據(jù)文件名后�,自動識� 文件類型
例子用法:
gcc -x c hello.pig -x none hello2.c
-c
只激活預處理,編譯,和匯�,也就是他只把程序做成obj文件
例子用法:
gcc -c hello.c
他將生成.o的obj文件
-S
只激活預處理和編譯,就是指把文件編譯成為匯編代碼�
例子用法
gcc -S hello.c
他將生成.s的匯編代�,你可以用文本編輯器察看
-E
只激活預處理,這個不生成� �,你需要把它重定向到一個輸出文件里�.
例子用法:
gcc -E hello.c > pianoapan.txt
gcc -E hello.c | more
慢慢看吧,一個hello word 也要與處理成800行的代碼
-o
制定目標名稱,缺省的時�,gcc 編譯出來的文件是a.out,很難�,如果你和我有同感
,改掉它,哈哈
例子� �
gcc -o hello.exe hello.c (�,windows用習慣了)
gcc -o hello.asm -S hello.c
-pipe
使用管道代替編譯中臨時文�,在使用非gnu匯編工具的時�,可能有些問題
gcc -pipe -o hello.exe hello.c
-ansi
關閉gnu c中與ansi c不兼容的特�,激活ansi c的專有特�(包括禁止一些asm inl
ine typeof關鍵�,以及UNIX,vax等預處理�,
-fno-asm
此選項實�(xiàn)ansi選項的功能的一部分,它禁止將asm,inline和typeof用作關鍵字�
-fno-strict-prototype
只對g++起作�,使用這個選�,g++將對不帶參數(shù)的函�(shù),都認為是沒有顯式的對參數(shù)
的個數(shù)和類型說�,而不是沒有參�(shù).
而gcc無論是否使用這個參�(shù),都將對沒有帶參數(shù)的函�(shù),認為城沒有顯式說明的類型
-fthis-is-varialble
就是向傳�(tǒng)c++看齊,可以使用this當一般變量使�.
-fcond-mismatch
允許條件 表達式的第二和第三參�(shù)類型不匹�,表達式的值將為void類型
-funsigned-char
-fno-signed-char
-fsigned-char
-fno-unsigned-char
這四個參�(shù)是對char類型進行設置,決定� char類型設置成unsigned char(前兩個參
�(shù))或� signed char(后兩個參�(shù))
-include file
包含某個代�,簡單來說,就是便以某個文�,需要另一個文件的時�,就可以用它設
�,功能就相當于在代碼中� �#include<filename>
例子用法:
gcc hello.c -include /root/pianopan.h
-imacros file
將file文件的宏,擴展到gcc/g++的輸入文 �,宏定義本身并不出�(xiàn)在輸入文件中
-Dmacro
相當于C語言中的#define macro
-Dmacro=defn
相當于C語言中的#define macro=defn
-Umacro
相當于C語言� �#undef macro
-undef
取消對任何非標準宏的定義
-Idir
在你� �#include"file"的時�,gcc/g++會先在當前目錄查找你所制定的頭文件,�
果沒有找�,他回到缺省的頭文件目錄找,如果� �-I制定了目�,�
回先在你所制定的目錄查�,然后再按常規(guī)的順序去�.
� �#include<file>,gcc/g++會到-I制定的目錄查�,查找不到,然后將到系統(tǒng)的缺
省的頭文件目錄查�
-I-
就是取消前一個參�(shù)的功�,所以一般在-Idir之后使用
-idirafter dir
�-I的目錄里面查找失�,講到這個目錄里面查�.
-iprefix prefix
-iwithprefix dir
一般一起使�,�-I的目錄查找失�,會到prefix+dir下查�
-nostdinc
� 編譯器不再系�(tǒng)缺省的頭文件目錄里面找頭文件,一般和-I�(lián)合使�,明確限定�
文件的位�
-nostdin C++
�(guī)定不在g++指定的標準路�(jīng)中搜�,但仍在其他路徑中搜索,.此選項在�(chuàng)libg++�
使用
-C
� 預處理的時�,不刪除注釋信�,一般和-E使用,有時候分析程�,用這個很方便�
-M
生成文件關聯(lián)的信 息。包含目標文件所依賴的所有源代碼你可以用gcc -M hello.c
來測試一�,很簡單�
-MM
和上面的那個一�,但是它將忽略由#include<file>造成的依賴關系�
-MD
�-M相同� 但是輸出將導入到.d的文件里�
-MMD
�-MM相同,但是輸出將導入�.d的文件里�
-Wa,option
此選項傳遞option給匯編程�;如果option中間有逗號,就將option分成多個選�,�
后傳遞給會匯編程�
-Wl.option
此選項傳遞option給連接程序;如果option中間有逗號,就將option分成多個選�,�
� 傳遞給會連接程序.
-llibrary
制定編譯的時候使用的�
例子用法
gcc -lcurses hello.c
使用ncurses庫編譯程�
-Ldir
制定編譯的時�,搜索庫 的路徑。比如你自己的庫,可以用它制定目錄,不然
編譯器將只在標準庫的目錄�。這個dir就是目錄的名稱�
-O0
-O1
-O2
-O3
編譯器的�(yōu)化選項的4個級��-O0表示沒有�(yōu)�,-O1為缺省��-O3�(yōu)化級�
-g
只是編譯器,在編譯的時�,產(chǎn)生調(diào)試信息�
-gstabs
此選 項以stabs格式聲稱�(diào)試信�,但是不包括gdb�(diào)試信�.
-gstabs+
此選項以stabs格式聲稱�(diào)試信 �,并且包含僅供gdb使用的額外調(diào)試信�.
-ggdb
此選項將盡可能的生成gdb的可以使用的�(diào)試信�.
-static
此選項將禁止使用動態(tài)�,所以,編譯出來的東�,一般都很大,也不需要什�
動態(tài)連接�,就可以運行.
-share
此選項將盡量使用動態(tài)庫,所以生成文件比較小,但是需要系�(tǒng)由動�(tài)�.
-traditional
試圖讓編譯器支持傳統(tǒng)的C語言 特�
[參考資料]
-Linux/UNIX編程
中科紅旗軟件技術有限公司編�.清華大學出版社出�
-Gcc man page
[ChangeLog]
-2002-08-10
ver 0.1 �(fā)布最初的文檔
-2002-08-11
ver 0.11 修改文檔格式
-2002-08-12
ver 0.12 加入了對靜態(tài)庫,動態(tài)庫的參數(shù)
-2002-08-16
ver 0.16 增加了gcc編譯�4個階段的命令
運行 gcc/egcs
**********運行 gcc/egcs***********************
GCC � GNU � C � C++ 編譯�。實際上,GCC 能夠編譯三種語言:C、C++ � O
bject C(C 語言的一種面�?qū)ο髷U展)。利� gcc 命令可同時編譯并連接 C � C++
� 程序�
如果你有兩個或少數(shù)幾� C 源文件,也可以方便地利用 GCC 編譯、連接并生成可
�(zhí)行文件。例�,假設你有兩個源文件 main.c � factorial.c 兩個源文件,現(xiàn)在要�
譯生成一個計算階乘的程序�
代碼:
-----------------------
清單 factorial.c
-----------------------
int factorial (int n)
{
if (n <= 1)
return 1;
else
return factorial (n - 1) * n;
}
-----------------------
清單 main.c
-----------------------
#include <stdio.h>
#include <unistd.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;
}
-----------------------
利用如下的命令可 編譯生成可執(zhí)行文�,并�(zhí)行程序:
$ gcc -o factorial main.c factorial.c
$ ./factorial 5
Factorial of 5 is 120.
GCC 可同時用來編� C 程序� C++ 程序。一般來�,C 編譯器通過源文件的后綴
名來判斷� C 程序還是 C++ 程序。在 Linux 中,C 源文件的后綴名為 .c,� C++ �
文件的后綴名� .C � .cpp。但�,gcc 命令只能編譯 C++ 源文件,而不能自動和 C
++ 程序使用的庫連接。因�,通常使用 g++ 命令來完� C++ 程序的編譯和連接,該�
序會自動�(diào)� gcc 實現(xiàn)編譯。假設我們有一個如下的 C++ 源文件(hello.C):
#include <iostream>
void main (void)
{
cout << "Hello, world!" << endl;
}
則可以如下調(diào)� g++ 命令編譯、連接并生成可�(zhí)行文件:
$ g++ -o hello hello.C
$ ./hello
Hello, world!
**********************gcc/egcs 的主要選�*********
gcc 命令的常用選�
選項 解釋
-ansi 只支� ANSI 標準� C 語法。這一選項將禁� GNU C 的某些特��
例如 asm � typeof 關鍵��
-c 只編譯并生成目標文件�
-DMACRO 以字符串�1”定� MACRO ��
-DMACRO=DEFN 以字符串“DEFN”定� MACRO ��
-E 只運� C 預編譯器�
-g 生成�(diào)試信息。GNU �(diào)試器可利用該信息�
-IDIRECTORY 指定額外的頭文件搜索路徑DIRECTORY�
-LDIRECTORY 指定額外的函�(shù)庫搜索路徑DIRECTORY�
-lLIBRARY 連接時搜索指定的函數(shù)庫LIBRARY�
-m486 針對 486 進行代碼�(yōu)��
-o FILE 生成指定的輸出文件。用在生成可�(zhí)行文件時�
-O0 不進行�(yōu)化處理�
-O � -O1 �(yōu)化生成代��
-O2 進一步優(yōu)��
-O3 � -O2 更進一步優(yōu)化,包括 inline 函數(shù)�
-shared 生成共享目標文件。通常用在建立共享庫時�
-static 禁止使用共享連接�
-UMACRO 取消� MACRO 宏的定義�
-w 不生成任何警告信息�
-Wall 生成所有警告信��
①GCC是一個可移植的編譯器,可以運行在當前的很多平臺上,也可以為大部分的平臺編譯程��
?、贕CC不是一個本地編譯器??梢栽谝粋€平臺上編譯另一個平臺運行的軟件。例如可以在windows平臺上編譯Linux的可�(zhí)行文��
③GCC支持多種語言,甚至可以交叉編譯不同語言�
?、蹽CC是模塊化�,當出現(xiàn)新的語言,只需要為GCC開發(fā)一個支持該語言的前�,GCC即可支持該語言�
?、軬CC是一個免費自由軟�,你可以免費使用GCC,也可以自己修改GCC的內(nèi)��
我們在編譯c/c++代碼的時�,有人用gcc,有人用g++,于是各種說法都來了,譬如c代碼用gcc,而c++代碼用g++,或者說編譯用gcc,鏈接用g++,一時也不知哪個說法正確,如果再遇上個extern "C",分歧就更多了,這里我想作個了�(jié),畢竟知識的目的是令人更清醒,而不是更糊涂�
誤區(qū)一:gcc只能編譯c代碼,g++只能編譯c++代碼
兩者都可以,但是請注意�
1.后綴�.c�,gcc把它當作是C程序,而g++當作是c++程序;后綴為.cpp�,兩者都會認為是c++程序,注�,雖然c++是c的超�,但是兩者對語法的要求是有區(qū)別的,例如:
#include <stdio.h>
int main(int argc, char* argv[]) {
if(argv == 0) return;
printString(argv);
return;
}
int printString(char* string) {
sprintf(string, "This is a test.\n");
}
如果按照C的語法規(guī)�,OK,沒問題,但�,一旦把后綴改為cpp,立刻報三個錯:“printString未定義��
“cannot convert `char**' to `char*��
”return-statement with no value“;
分別對應前面紅色標注的部�??梢奀++的語法規(guī)則更加嚴謹一��
2.編譯階段,g++會調(diào)用gcc,對于c++代碼,兩者是等價�,但是因為gcc命令不能自動和C++程序使用的庫�(lián)�,所以通常用g++來完成鏈接,為了�(tǒng)一起見,干脆編�/鏈接�(tǒng)�(tǒng)用g++�,這就給人一種錯�,好像cpp程序只能用g++似的�
誤區(qū)�:gcc不會定義__cplusplus�,而g++�
實際�,這個宏只是標志著編譯器將會把代碼按C還是C++語法來解釋,如上所�,如果后綴為.c,并且采用gcc編譯�,則該宏就是未定義的,否�,就是已定義�
誤區(qū)�:編譯只能用gcc,鏈接只能用g++
嚴格來說,這句話不算錯�,但是它混淆了概念,應該這樣說:編譯可以用gcc/g++,而鏈接可以用g++或者gcc -lstdc++。因為gcc命令不能自動和C++程序使用的庫�(lián)�,所以通常使用g++來完成聯(lián)�。但在編譯階段,g++會自動調(diào)用gcc,二者等價�
誤區(qū)�:extern "C"與gcc/g++有關�
實際上并無關�,無論是gcc還是g++,用extern "c"�,都是以C的命名方式來為symbol命名,否�,都以c++方式命名。試驗如下:
me.h�
extern "C" void CppPrintf(void);
me.cpp:
#include <iostream>
#include "me.h"
using namespace std;
void CppPrintf(void)
{
cout << "Hello\n";
}
test.cpp:
#include <stdlib.h>
#include <stdio.h>
#include "me.h"
int main(void)
{
CppPrintf();
return 0;
}
1. 先給me.h加上extern "C",看用gcc和g++命名有什么不�
[root@root G++]# g++ -S me.cpp
[root@root G++]# less me.s
.globl _Z9CppPrintfv //注意此函�(shù)的命�
.type CppPrintf, @function
[root@root GCC]# gcc -S me.cpp
[root@root GCC]# less me.s
.globl _Z9CppPrintfv //注意此函�(shù)的命�
.type CppPrintf, @function
完全相同�
2. 去掉me.h中extern "C",看用gcc和g++命名有什么不�
[root@root GCC]# gcc -S me.cpp
[root@root GCC]# less me.s
.globl _Z9CppPrintfv //注意此函�(shù)的命�
.type _Z9CppPrintfv, @function
[root@root G++]# g++ -S me.cpp
[root@root G++]# less me.s
.globl _Z9CppPrintfv //注意此函�(shù)的命�
.type _Z9CppPrintfv, @function
完全相同�
【結(jié)論】完全相同,可見extern "C"與采用gcc/g++并無關系,以上的試驗還間接的印證了前面的說法:在編譯階段,g++是調(diào)用gcc的�
目前,GCC可以用來編譯C/C++、FORTRAN、JAVA、OBJC、ADA等語言的程�,可根據(jù)需要選擇安裝支持的語言。本文以在Redhat Linux上安裝GCC4.1.2為例(因在項目開發(fā)過程中要求使�,沒有用的GCC版本),介紹GCC的安裝過程�
安裝之前,系�(tǒng)中必須要有cc或者gcc等編譯器,并且是可用�,或者用�(huán)境變量CC指定系統(tǒng)上的編譯�。如果系�(tǒng)上沒有編譯器,不能安裝源代碼形式的GCC 4.1.2。如果是這種情況,可以在�(wǎng)上找一個與你系�(tǒng)相適應的如RPM等二進制形式的GCC軟件包來安裝使用。本文介紹的是以源代碼形式提供的GCC軟件包的安裝過程,軟件包本身和其安裝過程同樣適用于其它Linux和Unix系統(tǒng)�
系統(tǒng)上原來的GCC編譯器可能是把gcc等命令文件、庫文件、頭文件等分別存放到系統(tǒng)中的不同目錄下的。與此不�,現(xiàn)在GCC建議我們將一個版本的GCC安裝在一個單獨的目錄下。這樣做的好處是將來不需要它的時候可以方便地刪除整個目錄即可(因為GCC沒有uninstall功能�;缺點是在安裝完成后要做一些設置工作才能使編譯器工作正常。在本文中采用這個方案安裝GCC 4.1.2,并且在安裝完成后,仍然能夠使用原來低版本的GCC編譯�,即一個系�(tǒng)上可以同時存在并使用多個版本的GCC編譯器�
按照本文提供的步驟和設置選項,即使以前沒有安裝過GCC,也可以在系�(tǒng)上安裝上一個可工作的新版本的GCC編譯��
1. 下載
在GCC�(wǎng)站上或者通過�(wǎng)上搜索可以查找到下載資源。目前GCC的版本為 4.2.1。可供下載的文件一般有兩種形式:gcc-4.1.2.tar.gz和gcc-4.1.2.tar.bz2,只是壓縮格式不一樣,�(nèi)容完全一�,下載其中一種即��
2. 解壓�
拷貝gcc-4.1.2.tar.bz2(我下載的壓縮文件)�/usr/local/src(根據(jù)自己喜好選擇)�,根據(jù)壓縮格式,選擇下面相應的一種方式解包(以下的�%”表示命令行提示符)�
% tar zxvf gcc-4.1.2.tar.gz
或�
% bzcat gcc-4.1.2.tar.bz2 | tar xvf -
新生成的gcc-4.1.2這個目錄被稱為源目�,用${srcdir}表示�。以后在出現(xiàn)${srcdir}的地�,應該用真實的路徑來替換它。用pwd命令可以查看當前路徑�
�${srcdir}/INSTALL目錄下有詳細的GCC安裝說明,可用瀏覽器打開index.html閱讀�
3. 建立目標目錄
目標目錄(用${objdir}表示)是用來存放編譯�(jié)果的地方。GCC建議編譯后的文件不要放在源目�${srcdir]中(雖然這樣做也可以),單獨存放在另外一個目錄中,而且不能�${srcdir}的子目錄�
例如,可以這樣建立一個叫 /usr/local/gcc-4.1.2的目標目錄:
% mkdir /usr/local/gcc-4.1.2
% cd gcc-4.1.2
以下的操作主要是在目標目� ${objdir} 下進行�
4. 配置
配置的目的是決定將GCC編譯器安裝到什么地方(${destdir}�,支持什么語言以及指定其它一些選項等。其��${destdir}不能�${objdir}�${srcdir}目錄相同�
配置是通過�(zhí)�${srcdir}下的configure來完成的。其命令格式為(記得用你的真實路徑替�${destdir}):
% ${srcdir}/configure --prefix=${destdir} [其它選項]
例如,如果想將GCC 4.1.2安裝�/usr/local/gcc-4.1.2目錄下,�${destdir}就表示這個路��
在我的機器上,我是這樣配置的:
% ../gcc-4.1.2/configure --prefix=/usr/local/gcc-4.1.2 --enable-threads=posix --disable-checking --enable--long-long --host=i386-redhat-linux --with-system-zlib --enable-languages=c,c++,java
將GCC安裝�/usr/local/gcc-4.1.2目錄�,支持C/C++和JAVA語言,其它選項參見GCC提供的幫助說��
5. 編譯
% make
6. 安裝
�(zhí)行下面的命令將編譯好的庫文件等拷貝到${destdir}目錄中(根據(jù)你設定的路徑,可能需要管理員的權限)�
% make install
至此,GCC 4.1.2安裝過程就完成了�
6. 其它設置
GCC 4.1.2的所有文�,包括命令文件(如gcc、g++)、庫文件等都�${destdir}目錄下分別存�,如命令文件放在bin目錄�、庫文件� lib�、頭文件在include下等。由于命令文件和庫文件所在的目錄還沒有包含在相應的搜索路徑內(nèi),所以必須要作適�?shù)脑O置之后編譯器才能順利地找到并使用它們�
6.1 gcc、g++、gcj的設�
要想使用GCC 4.1.2的gcc等命�,簡單的方法就是把它的路�${destdir}/bin放在�(huán)境變量PATH中。我不用這種方式,而是用符號連接的方式實�(xiàn),這樣做的好處是我仍然可以使用系統(tǒng)上原來的舊版本的GCC編譯��
首先,查看原來的gcc所在的路徑�
% which gcc
在我的系�(tǒng)�,上述命令顯示:/usr/bin/gcc。因�,原來的gcc命令�/usr/bin目錄�。我們可以把GCC 4.1.2中的gcc、g++、gcj等命令在/usr/bin目錄下分別做一個符號連接�
% cd /usr/bin
% ln -s ${destdir}/bin/gcc gcc412
% ln -s ${destdir}/bin/g++ g++412
% ln -s ${destdir}/bin/gcj gcj412
這樣,就可以分別使用gcc412、g++412、gcj412來調(diào)用GCC 4.1.2的gcc、g++、gcj完成對C、C++、JAVA程序的編譯了。同時,仍然能夠使用舊版本的GCC編譯器中的gcc、g++等命��
6.2 庫路徑的設置
�${destdir}/lib路徑添加到環(huán)境變量LD_LIBRARY_PATH�,例�,如果GCC 4.1.2安裝�/usr/local/gcc-4.1.2目錄�,在RH Linux下可以直接在命令行上�(zhí)�
% export LD_LIBRARY_PATH=/usr/local/gcc-4.1.2/lib
添加到系�(tǒng)的配置文件中,這樣就不必要每次都設置這個環(huán)境變量了,在文�$HOME/.bash_profile中添加下面兩句:
LD_LIBRARY_PATH=/usr/local/gcc-4.1.2/lib:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH
重啟系統(tǒng)設置生效,或者執(zhí)行命�
% source $HOME/.bash_profile
7. 測試
用新的編譯命令(gcc412、g++412等)編譯你以前的C、C++程序,檢驗新安裝的GCC編譯器是否能正常工作�
維庫電子�,電子知識,一查百��
已收錄詞�153979�