Linux下C開(kāi)發(fā)環(huán)境的構(gòu)成和安裝
文/余海發(fā)
本文介紹了Linux的C開(kāi)發(fā)環(huán)境的構(gòu)成和安裝,使讀者對(duì)Linux的C開(kāi)發(fā)環(huán)境能有初步的了解。
你了解Linux嗎?相信現(xiàn)在越來(lái)越多的人會(huì)說(shuō)“是”的。那么你了解到何種程度呢?不可否認(rèn),目前決大多數(shù)的Linux用戶對(duì)Linux的了解還處于比較低級(jí)的層次,他們可能會(huì)幾條命令、會(huì)配幾種服務(wù)、會(huì)用rpm來(lái)安裝軟件、會(huì)操作KDE/Gnome界機(jī)等等,但是當(dāng)他們遇到一些需要編譯安裝的軟件時(shí),面對(duì)一些簡(jiǎn)單的出錯(cuò)信息,他們就手足無(wú)措了。要想真正跨躍這些初級(jí)層次,你就不可能不去了解一些底層的東西,比如本文要講到的Linux下的C開(kāi)發(fā)環(huán)境以及本文之外的其它操作系統(tǒng)知識(shí)。
Linux和C天生有不解之源,大家可能知道Linux的操作系統(tǒng)內(nèi)核就主要是用C寫的,另外Linux下的很多軟件也是用C寫的,特別是一些著名的服務(wù)軟件,比如MySQL、Apache等。初學(xué)者可能在編譯MySQL這樣的軟件時(shí),遇到過(guò)各式各樣的錯(cuò)誤,其實(shí)只要你初步了解了Linux的C開(kāi)發(fā)環(huán)境,你就能自選解決安裝過(guò)程中的一些錯(cuò)誤。
Linux的C開(kāi)發(fā)環(huán)境與Windows的有所不同,在Linux下,一個(gè)完整的C開(kāi)發(fā)環(huán)境包括以下三個(gè)組成:
1、函數(shù)庫(kù): glibc
要構(gòu)架一個(gè)完整的C開(kāi)發(fā)環(huán)境,Glibc是必不可少的,它是Linux下C的主要函數(shù)庫(kù)。Glibc有兩種安裝方式:
A.安裝成測(cè)試用的函數(shù)庫(kù)
在編譯程序時(shí)用不同的選項(xiàng)來(lái)試用新的函數(shù)庫(kù)
B.安裝成主要的C函數(shù)庫(kù)
所有新編譯程序均用的函數(shù)庫(kù) Glibc2含幾個(gè)附加包:LinuxThreads、locale和crypt,通常它們的文件名隨版本不同而類似于下列文件名:
glibc-2.06.tar.gz
glibc-linuxthreads-2.0.6.tar.gz
glibc-localedate-2.0.6.tar.gz
glibc-crypt-2.0.6.tar.gz
2、編譯器:gcc
gcc(GNU CCompiler)是GNU推出的功能強(qiáng)大、性能優(yōu)越的多平臺(tái)編譯器,gcc編譯器能將C、C++語(yǔ)言源程序、匯程式化序和目標(biāo)程序編譯、連接成可執(zhí)行文件,以下是gcc支持編譯的一些源文件的后綴及其解釋:
.c為后綴的文件,C語(yǔ)言源代碼文件;
.a為后綴的文件,是由目標(biāo)文件構(gòu)成的檔案庫(kù)文件;
.C,.cc或.cxx 為后綴的文件,是C++源代碼文件;
.h為后綴的文件,是程序所包含的頭文件;
.i 為后綴的文件,是已經(jīng)預(yù)處理過(guò)的C源代碼文件;
.ii為后綴的文件,是已經(jīng)預(yù)處理過(guò)的C++源代碼文件;
.m為后綴的文件,是Objective-C源代碼文件;
.o為后綴的文件,是編譯后的目標(biāo)文件;
.s為后綴的文件,是匯編語(yǔ)言源代碼文件;
.S為后綴的文件,是經(jīng)過(guò)預(yù)編譯的匯編語(yǔ)言源代碼文件。
3、系統(tǒng)頭文件:glibc_header
缺少了系統(tǒng)頭文件的話,很多用到系統(tǒng)功能的C程序?qū)o(wú)法編譯。
假如用戶在安裝過(guò)程中少裝了這些包,就會(huì)無(wú)法編譯C源程序。初學(xué)者有時(shí)候選擇自己定制軟件包來(lái)安裝,結(jié)果遺漏了這些包,導(dǎo)致無(wú)法編譯源程序,不少人就只好重新安裝一遍L(zhǎng)inux。其實(shí)并不需要這樣做,雖然從tar包來(lái)安裝Linux的C開(kāi)發(fā)環(huán)境對(duì)于初學(xué)者來(lái)說(shuō)比較難,但是我們還是可以通過(guò)rpm包來(lái)迅速安裝Linux的C開(kāi)發(fā)環(huán)境的。下面以Red Hat 7.3為例,介紹如何安裝Linux的C開(kāi)發(fā)環(huán)境,如果是更高版本的Red Hat也可以參考,只是要注意軟件版本的不同。
由于gcc包需要依賴binutils和cpp包,另外make包也是在編譯中常用的,所以一共需要8個(gè)包來(lái)完成安裝,它們是:
cpp-2.96-110.i386.rpm
binutils-2.11.93.0.2-11.i386.rpm
glibc-2.2.5-34.i386.rpm
glibc-kernheaders-2.4-7.14.i386.rpm
glibc-common-2.2.5-34
glibc-devel-2.2.5-34.i386.rpm
gcc-2.96-110.i386.rpm
make-3.79.1-8.i386.rpm 如果連在internet上的話,可以直接從internet上安裝,命令依次如下:
rpm -ivh
ftp://216.254.0.38/linux/redhat/7.3/en/os/i386/RedHat/RPMS/cpp-2.96-110.i386.rpm
rpm -ivh
ftp://216.254.0.38/linux/redhat/7.3/en/os/i386/RedHat/RPMS/binutils-2.11.93.0.2-11.i386.rpm
rpm -ivh
ftp://216.254.0.38/linux/redhat/7.3/en/os/i386/RedHat/RPMS/glibc-kernheaders-2.4-7.14.i386.rpm
rpm -ivh
ftp://216.254.0.38/linux/redhat/7.3/en/os/i386/RedHat/RPMS/glibc-2.2.5-34.i386.rpm
rpm -ivh
ftp://216.254.0.38/linux/redhat/7.3/en/os/i386/RedHat/RPMS/glibc-devel-2.2.5-34.i386.rpm
rpm -ivh
ftp://216.254.0.38/linux/redhat/7.3/en/os/i386/RedHat/RPMS/glibc-common-2.2.5-34.i386.rpm
rpm -ivh
ftp://216.254.0.38/linux/redhat/7.3/en/os/i386/RedHat/RPMS/gcc-2.96-110.i386.rpm
rpm -ivh
ftp://216.254.0.38/linux/redhat/7.3/en/os/i386/RedHat/RPMS/make-3.79.1-8.i386.rpm
如果不是連在internet上的話,就要下載下來(lái)安裝了。安裝完后,就構(gòu)成了最基本的C開(kāi)發(fā)環(huán)境,在這個(gè)C開(kāi)發(fā)環(huán)境中,可以編譯多數(shù)的C寫的應(yīng)用程序。而對(duì)于一個(gè)C程序來(lái)說(shuō),安裝完成后通常可以分成三個(gè)組成:
1.可執(zhí)行文件
2.包含文件
3.庫(kù)文件
可執(zhí)行文件就是最終運(yùn)行的命令,包含文件是該C程序include的一些定義文件,庫(kù)文件則是該C程序自定義的庫(kù)。比如對(duì)于用RPM安裝的MySQL:可執(zhí)行文件放在/usr/bin下,包含文件放在/usr/include/mysql下,庫(kù)文件在/usr/lib/mysql下。只有系統(tǒng)可以找到程序?qū)?yīng)的包含文件和庫(kù)文件,程序可執(zhí)行文件才能正常運(yùn)行。
了解了Linux的C開(kāi)發(fā)環(huán)境的構(gòu)成和安裝,還是不夠的,還需要對(duì)其深入研究和學(xué)習(xí),才能夠做到“知其然,知其所以然”。
相關(guān)文章
linux系統(tǒng)啟動(dòng)自動(dòng)激活網(wǎng)卡的解決方法
linux系統(tǒng)啟動(dòng)自動(dòng)激活網(wǎng)卡的解決方法...2007-04-04Linux/window下怎樣查看某個(gè)端口被哪個(gè)程序/進(jìn)程占用
Linux/window下怎樣查看某個(gè)端口被哪個(gè)程序/進(jìn)程占用,接下來(lái)詳細(xì)介紹如何查看占用端口的程序,有需要的朋友可以參考下2013-01-01