日本免费全黄少妇一区二区三区-高清无码一区二区三区四区-欧美中文字幕日韩在线观看-国产福利诱惑在线网站-国产中文字幕一区在线-亚洲欧美精品日韩一区-久久国产精品国产精品国产-国产精久久久久久一区二区三区-欧美亚洲国产精品久久久久

介紹FreeBSD中的GNU C編譯器

最基本的開(kāi)發(fā)環(huán)境必須具備 C語(yǔ)言的支持能力,C作為一種編譯型的高級(jí)語(yǔ)言,這就是說(shuō)運(yùn)行C程序之前要將其先編譯成可執(zhí)行的由機(jī)器指令構(gòu)成的執(zhí)行程序,因此就需要使用一個(gè)編譯器來(lái)對(duì)C源代碼進(jìn)行處理,F(xiàn)reeBSD使用的是GNU的C編譯器 。
GCC作為當(dāng)前最流行的、支持平臺(tái)數(shù)量最多的編譯器,其性能和效率也非常之好 。
按照 C語(yǔ)言的習(xí)慣,第一個(gè)程序通常為hello.c:
$ cat hello.c
main()
{
printf( “ Hello, world!n);
}
簡(jiǎn)單的編譯過(guò)程如下:
$ cc hello.c
$ ./a.out
Hello, world!
Unix下缺省使用a.out作為生成的文件名,可以使用-o參數(shù)指出生成的執(zhí)行文件名 。
事實(shí)上前面的編譯生成執(zhí)行文件的過(guò)程由兩步組成,一是生成目標(biāo)文件,通常使用 .o為后綴,然后進(jìn)行連接生成執(zhí)行文件 。
因此,可以使用 ar將多個(gè)目標(biāo)文件組合成一個(gè)函數(shù)庫(kù)文件,而可以使用nm來(lái)查看庫(kù)文件的內(nèi)容 。
$ cc -c f1.c
$ cc -c f2.c
$ ar c mlib.a f1.o f2.o
$ nm mlib.a
FreeBSD使用的C語(yǔ)言編譯器gcc是一種非常流行的,多平臺(tái)、高效率的C語(yǔ)言編譯器,它提供了多種選項(xiàng)用于生成應(yīng)用軟件 。以下為常用的一些選項(xiàng):
-L
定義連接庫(kù)文件的目錄
-I
定義 C源碼的頭文件的目錄
-o
后面跟的參數(shù)為要生成的執(zhí)行文件的名
【介紹FreeBSD中的GNU C編譯器】-O
進(jìn)行編譯優(yōu)化,可以指定使用不同的優(yōu)化級(jí)別,從 O2到O6,每個(gè)不同的級(jí)別使用的優(yōu)化設(shè)置不同 。
相關(guān)的選項(xiàng)還有定義生成的指令碼類型的參數(shù),如 -m486生成486指令,缺省的gcc版本(2.7.2)不支持Pentium代碼 。
-g
加入調(diào)試代碼,可以在完成后使用 strip命令刪除用于調(diào)試的信息
-c
僅僅進(jìn)行編譯而不進(jìn)行連接,生成目標(biāo)文件
-fPic
生成相對(duì)地址的代碼,可用于最后生成動(dòng)態(tài)連接庫(kù)
-static
強(qiáng)制生成靜態(tài)連接的程序
-aout
生成 a.out格式的執(zhí)行文件、目標(biāo)代碼等,缺省使用ELF格式
-elf
3.0之后為缺省設(shè)置,生成ELF格式的目標(biāo)和執(zhí)行代碼
可以通過(guò)命令行參數(shù)查看當(dāng)前使用的 GNU C編譯器的版本:
$ cc -version
Gcc version 2.7.2.1
FreeBSD當(dāng)前使用GNU的C編譯器有時(shí)候不是gcc編譯器的最新版本,因?yàn)橛袝r(shí)候最新版本的軟件不可避免的有些小問(wèn)題 。當(dāng)然,使用者完全可以自己手工升級(jí)到最新版本的gcc,這可是一個(gè)有趣的聯(lián)系 。

    推薦閱讀