日韩欧美国产极速不卡一区,国产手机视频在线观看尤物,国产亚洲欧美日韩蜜芽一区,亚洲精品国产免费,亚洲二区三区无码中文,A大片亚洲AV无码一区二区三区,日韩国语国产无码123

您好,歡迎來到維庫電子市場網(wǎng) 登錄 | 免費注冊

GCC
閱讀�20216時間�2010-12-02 09:10:55

  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)是一個包含眾多語言的編譯器��

基本�(guī)�

  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)��

和G++的區(qū)�

  我們在編譯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

贵定�| 乌兰浩特�| 贡觉�| 北票�| 昌图�| 固始�| 舟山�| 紫阳�| 通许�| 南投�| 滦平�| 商洛�| 灯塔�| 柳州�| 永新�| 开阳县| 定日�| 崇义�| 怀集县| 永昌�| 应用必备| 铁岭�| 周口�| 崇左�| 垫江�| 上思县| 资阳�| 怀集县| 宁阳�| 牟定�| 临夏�| 永吉�| 盐边�| 武胜�| 攀枝花�| 新乡�| 镇江�| 陕西�| 科尔| 民乐�| 通许�|