歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux綜合 >> Linux資訊 >> 更多Linux >> 介紹FreeBSD中的GNU C編譯器

介紹FreeBSD中的GNU C編譯器

日期:2017/2/27 14:27:18   编辑:更多Linux
  最基本的開發環境必須具備 C語言的支持能力,C作為一種編譯型的高級語言,這就是說運行C程序之前要將其先編譯成可執行的由機器指令構成的執行程序,因此就需要使用一個編譯器來對C源代碼進行處理,FreeBSD使用的是GNU的C編譯器。GCC作為當前最流行的、支持平台數量最多的編譯器,其性能和效率也非常之好。 按照 C語言的習慣,第一個程序通常為hello.c: $ cat hello.c main() { printf( “ Hello, world!n ” ); } 簡單的編譯過程如下: $ cc hello.c $ ./a.out Hello, world! UNIX下缺省使用a.out作為生成的文件名,可以使用-o參數指出生成的執行文件名。 事實上前面的編譯生成執行文件的過程由兩步組成,一是生成目標文件,通常使用 .o為後綴,然後進行連接生成執行文件。 因此,可以使用 ar將多個目標文件組合成一個函數庫文件,而可以使用nm來查看庫文件的內容。 $ cc -c f1.c $ cc -c f2.c $ ar c mlib.a f1.o f2.o $ nm mlib.a FreeBSD使用的C語言編譯器gcc是一種非常流行的,多平台、高效率的C語言編譯器,它提供了多種選項用於生成應用軟件。以下為常用的一些選項: -L 定義連接庫文件的目錄 -I 定義 C源碼的頭文件的目錄 -o 後面跟的參數為要生成的執行文件的名 -O 進行編譯優化,可以指定使用不同的優化級別,從 O2到O6,每個不同的級別使用的優化設置不同。 相關的選項還有定義生成的指令碼類型的參數,如 -m486生成486指令,缺省的gcc版本(2.7.2)不支持Pentium代碼。 -g 加入調試代碼,可以在完成後使用 strip命令刪除用於調試的信息 -c 僅僅進行編譯而不進行連接,生成目標文件 -fPic 生成相對地址的代碼,可用於最後生成動態連接庫 -static 強制生成靜態連接的程序 -aout 生成 a.out格式的執行文件、目標代碼等,缺省使用ELF格式 -elf 3.0之後為缺省設置,生成ELF格式的目標和執行代碼 可以通過命令行參數查看當前使用的 GNU C編譯器的版本: $ cc -version Gcc version 2.7.2.1 FreeBSD當前使用GNU的C編譯器有時候不是gcc編譯器的最新版本,因為有時候最新版本的軟件不可避免的有些小問題。當然,使用者完全可以自己手工升級到最新版本的gcc,這可是一個有趣的聯系。




Copyright © Linux教程網 All Rights Reserved