目前決大多 數的Linux用戶對Linux的了解還處於比較低級的層次,他們可能會幾條命令、會配幾種服務、會用rpm來安裝軟件、會操作KDE/Gnome界機等等,但是當他們遇到一些需要編譯安裝的軟件時,面對一些簡單的出錯信息,他們就手足無措了。要想真正跨躍這些初級層次,你就不可能不去了解一些底層的東西,比如本文要講到的Linux下的C開發環境以及本文之外的其它操作系統知識。
Linux和C天生有不解之源,大家可能知道Linux的操作系統內核就主要是用C寫的,另外Linux下的很多軟件也是用C寫的,特別是一些著名的服務軟件,比如MySQL、Apache等。初學者可能在編譯MySQL這樣的軟件時,遇到過各式各樣的錯誤,其實只要你初步了解了Linux的C開發環境,你就能自選解決安裝過程中的一些錯誤。
Linux的C開發環境與Windows的有所不同,在Linux下,一個完整的C開發環境包括以下三個組成:
1、函數庫: glibc
要構架一個完整的C開發環境,Glibc是必不可少的,它是Linux下C的主要函數庫。Glibc有兩種安裝方式:
A.安裝成測試用的函數庫
在編譯程序時用不同的選項來試用新的函數庫
B.安裝成主要的C函數庫
所有新編譯程序均用的函數庫
Glibc2含幾個附加包: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推出的功能強大、性能優越的多平台編譯器,gcc編譯器能將C、C++語言源程序、匯程式化序和目標程序編譯、連接成可執行文件,以下是gcc支持編譯的一些源文件的后綴及其解釋:
.c為后綴的文件,C語言源代碼文件;
.a為后綴的文件,是由目標文件構成的檔案庫文件;
.C,.cc或.cxx 為后綴的文件,是C++源代碼文件;
.h為后綴的文件,是程序所包含的頭文件;
.i 為后綴的文件,是已經預處理過的C源代碼文件;
.ii為后綴的文件,是已經預處理過的C++源代碼文件;
.m為后綴的文件,是Objective-C源代碼文件;
.o為后綴的文件,是編譯后的目標文件;
.s為后綴的文件,是匯編語言源代碼文件;
.S為后綴的文件,是經過預編譯的匯編語言源代碼文件。
3、系統頭文件:glibc_header
缺少了系統頭文件的話,很多用到系統功能的C程序將無法編譯。
假如用戶在安裝過程中少裝了這些包,就會無法編譯C源程序。初學者有時候選擇自己定制軟件包來安裝,結果遺漏了這些包,導致無法編譯源程序,不少人就只好重新安裝一遍Linux。其實並不需要這樣做,雖然從tar包來安裝Linux的C開發環境對於初學者來說比較難,但是我們還是可以通過rpm包來迅速安裝Linux的C開發環境的。下面以Red Hat 7.3為例,介紹如何安裝Linux的C開發環境,如果是更高版本的Red Hat也可以參考,只是要注意軟件版本的不同。
由於gcc包需要依賴binutils和cpp包,另外make包也是在編譯中常用的,所以一共需要8個包來完成安裝,它們是:
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上的話,就要下載下來安裝了。安裝完后,就構成了最基本的C開發環境,在這個C開發環境中,可以編譯多數的C寫的應用程序。而對於一個C程序來說,安裝完成后通常可以分成三個組成:
1.可執行文件
2.包含文件
3.庫文件
可執行文件就是最終運行的命令,包含文件是該C程序include的一些定義文件,庫文件則是該C程序自定義的庫。比如對於用RPM安裝的MySQL:可執行文件放在/usr/bin下,包含文件放在/usr/include/mysql下,庫文件在/usr/lib/mysql下。只有系統可以找到程序對應的包含文件和庫文件,程序可執行文件才能正常運行。
目前決大多
數的
Linux
用戶對
Linux
的了解還處於比較低級的層次,他們可能
會幾條命令、會配幾種服務、會用
rpm
來安裝軟件、會操作
KDE/Gnome
界機等等,但是當
他們遇到一些需要編譯安裝的軟件時,
面對一些簡單的出錯信息,
他們就手足無措了。
要想
真正跨躍這些初級層次,
你就不可能不去了解一些底層的東西,
比如本文要講到的
Linux
下
的
C
開發環境以及本文之外的其它操作系統知識。
Linux
和
C
天生有不解之源,
大家可能知道
Linux
的操作系統內核就主要是用
C
寫的,
另外
Linux
下的很多軟件也是用
C
寫的,
特別是一些著名的服務軟件,
比如
MySQL
、
Apache
等。初學者可能在編譯
MySQL
這樣的軟件時,遇到過各式各樣的錯誤,其實只要你初步了
解了
Linux
的
C
開發環境,你就能自選解決安裝過程中的一些錯誤。
Linux
的
C
開發環境與
Windows
的有所不同,在
Linux
下,一個完整的
C
開發環境包
括以下三個組成:
1
、函數庫
: glibc
要構架一個完整的
C
開發環境,
Glibc
是必不可少的,它是
Linux
下
C
的主要函數庫。
Glibc
有兩種安裝方式:
A.
安裝成測試用的函數庫
在編譯程序時用不同的選項來試用新的函數庫
B.
安裝成主要的
C
函數庫
所有新編譯程序均用的函數庫
Glibc2
含幾個附加包:
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
推出的功能強大、性能優越的多平台編譯器,
gcc
編譯器
能將
C
、
C++
語言源程序、匯程式化序和目標程序編譯、連接成可執行文件,以下是
gcc
支
持編譯的一些源文件的后綴及其解釋:
.c
為后綴的文件,
C
語言源代碼文件;
.a
為后綴的文件,是由目標文件構成的檔案庫文件;
.C
,
.cc
或
.cxx
為后綴的文件,是
C++
源代碼文件;
.h
為后綴的文件,是程序所包含的頭文件;
.i
為后綴的文件,是已經預處理過的
C
源代碼文件;
.ii
為后綴的文件,是已經預處理過的
C++
源代碼文件;
.m
為后綴的文件,是
Objective-C
源代碼文件;
.o
為后綴的文件,是編譯后的目標文件;
.s
為后綴的文件,是匯編語言源代碼文件;
.S
為后綴的文件,是經過預編譯的匯編語言源代碼文件。
3
、系統頭文件:
glibc_header
缺少了系統頭文件的話,很多用到系統功能的
C
程序將無法編譯。
假如用戶在安裝過程中少裝了這些包,就會無法編譯
C
源程序。初學者有時候選擇自
己定制軟件包來安裝,
結果遺漏了這些包,
導致無法編譯源程序,
不少人就只好重新安裝一
遍
Linux
。其實並不需要這樣做,雖然從
tar
包來安裝
Linux
的
C
開發環境對於初學者來說
比較難,但是我們還是可以通過
rpm
包來迅速安裝
Linux
的
C
開發環境的。下面以
Red Hat
7.3
為例,介紹如何安裝
Linux
的
C
開發環境,如果是更高版本的
Red
Hat
也可以參考,只
是要注意軟件版本的不同。
由於
gcc
包需要依賴
binutils
和
cpp
包,另外
make
包也是在編譯中常用的,所以一共
需要
8
個包來完成安裝,它們是:
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
上的話,
就要下載下來安裝了。
安裝完后,
就構成了最基本的
C
開發環境,在這個
C
開發環境中,可以編譯多數的
C
寫的應用程序。而對於一個
C
程序來
說,安裝完成后通常可以分成三個組成:
1.
可執行文件
2.
包含文件
3.
庫文件
可執行文件就是最終運行的命令,包含文件是該
C
程序
include
的一些定義文件,庫
文件則是該
C
程序自定義的庫。比如對於用
RPM
安裝的
MySQL
:可執行文件放在
/usr/bin
下,包含文件放在
/usr/include/mysql
下,庫文件在
/usr/lib/mysql
下。只有系統可以找到程序
對應的包含文件和庫文件,程序可執行文件才能正常運行。
了解了
Linux
的
C
開發環境的構成和安裝,
還是不夠的,
還需要對其深入研究和學習,
才能夠做到“知其然,知其所以然”
。