本文介绍了
Linux的C开发
环境的构成和安装,使读者对Linux的C开发环境能有初步的了解。
: r2 ?7 O+ N9 `" P
/ D s; A( U. z f2 l 你了解Linux吗?相信现在越来越多的人会说“是”的。那么你了解到何种程度呢?不可否认,目前决大多数的Linux用户对Linux的了解还处于比较低级的层次,他们可能会几条命令、会配几种服务、会用rpm来安装
软件、会操作KDE/Gnome界机等等,但是当他们遇到一些需要编译安装的软件时,面对一些简单的出错
信息,他们就手足无措了。要想真正跨跃这些初级层次,你就不可能不去了解一些底层的东西,比如本文要讲到的Linux下的C开发环境以及本文之外的其它操作
系统知识。
M% A( u8 E$ l7 x/ C/ L/ T3 F+ e+ w0 q0 x, X# k; z/ Q
0 s1 [5 N4 g' G' L7 z Linux和C天生有不解之源,大家可能知道Linux的
操作系统内核就主要是用C写的,另外Linux下的很多软件也是用C写的,特别是一些著名的服务软件,比如My
SQL、Apache等。初学者可能在编译MySQL这样的软件时,遇到过各式各样的错误,其实只要你初步了解了Linux的C开发环境,你就能自选解决安装过程中的一些错误。
% J$ ]* v1 [* u) K, n/ }: g
$ ~" `) V% [( C$ t
Linux的C开发环境与
Windows的有所不同,在Linux下,一个完整的C开发环境包括以下三个组成:
$ E7 G0 z; G3 q# v1 k6 X
2 I& S7 r# j. {8 C* K
1、函数库:glibc1 K; \& @! f5 o: |
4 K9 f2 R# z* ?8 J+ |
要构架一个完整的C开发环境,Glibc是必不可少的,它是Linux下C的主要函数库。Glibc有两种安装方式:
+ A: Z" M' e3 N9 x W& z U7 P5 k
7 X$ o7 Z' e G1 h A.安装成
测试用的函数库
) |& ]3 R8 [# k& {1 Q
0 z. [+ i F6 ]2 \4 R
在编译
程序时用不同的选项来试用新的函数库
( E8 o7 q. X" a( B( f5 \
; D* H3 A' B0 n, q, n2 k7 H B.安装成主要的C函数库
9 k ?) q* p) B/ T& @5 B. b- P: P4 n0 \
所有新编译程序均用的函数库Glibc2含几个附加包:LinuxThreads、locale和crypt,通常它们的文件名随版本不同而
类似于下列文件名:
2 G: F b- w7 O: T
( C0 {; n% q2 g h" y# t5 P glibc-2.06.tar.gz
5 c$ j) e% ?2 m* `$ d
; ?1 e8 g0 @1 t' c. @7 ` glibc-linuxthreads-2.0.6.tar.gz
2 e1 l- a3 K# _3 u4 a& M
0 D+ e, o+ I6 e$ l: F7 r* h glibc-localedate-2.0.6.tar.gz
% _+ |0 l. ~: o2 Y8 `$ }5 V9 J! R) [6 L( E/ E5 `
glibc-crypt-2.0.6.tar.gz
6 y5 D6 H, Y- O8 y* L
( {3 K# A, B: t* L5 u 2、编译器:gcc# N; O6 l1 y5 P# g# Z
) E4 k" T R; [ gcc(GNUCCompiler)是GNU推出的
功能强大、性能优越的多平台编译器,gcc编译器能将C、C语言源程序、汇程式化序和目标程序编译、连接成可执行文件,以下是gcc支持编译的一些源文件的后缀及其解释:
. z* I# ]' p! e6 x
$ e, I$ t- i* k6 w+ p0 h, z
.c为后缀的文件,C语言
源代码文件;
2 z+ i! L" [# N, `, m
5 C7 x7 q5 N& p" w. e7 h& {5 j .a为后缀的文件,是由目标文件构成的档案库文件;
0 m0 I) C1 z/ S. i7 E' t: F0 B
7 H1 S4 G' n* C/ O .C,.cc或.cxx为后缀的文件,是C源代码文件;
0 c/ {+ P1 I; c6 P
9 x) F! P7 y0 u2 n0 K .h为后缀的文件,是程序所包含的头文件;
4 k- M4 E& j8 M B' k Y
; z5 ?0 W( d% V/ n$ | .i为后缀的文件,是已经预处理过的C源代码文件;
& {% J* h6 U" y
, G: r' ~1 {; P
.ii为后缀的文件,是已经预处理过的C源代码文件;
' J6 n" E# H( N4 ]% g% P' f3 E
$ S1 v% o8 F7 S: { .m为后缀的文件,是Objective-C源代码文件;
7 ~8 P. _7 E7 D: Z: M+ J8 I
1 d/ s8 @/ y! q! q! r( g/ I6 E: a! W* D .o为后缀的文件,是编译后的目标文件;
" H8 I# L3 o' X+ l7 s
[color=#FFFFFF']
/ s1 x8 _# i F/ t4 D1 M5 g, c( Y2 W, z1 Q) }3 C1 F' e b7 C1 Q" x
" {; C" A2 w, [) C. @
.s为后缀的文件,是汇编语言源代码文件;
/ w4 X: h% d5 Z$ j8 E: N
+ \8 s' g1 ]- D1 r5 i5 Z7 V q .S为后缀的文件,是经过预编译的汇编语言源代码文件。
' q/ P0 R( ~( [7 w: b W7 m) M
W' l- r) e1 K# G 3、系统头文件:glibc_header
/ Q. X# C# t0 z+ t) P) l6 K
1 [# b0 f: q8 b& x, Q 缺少了系统头文件的话,很多用到系统功能的C程序将无法编译。
8 ^; \; r3 x* A" J5 a+ P
# U: u: {, R' X2 o& X! o: @ 假如用户在安装过程中少装了这些包,就会无法编译C源程序。初学者有时候选择自己定制软件包来安装,结果遗漏了这些包,导致无法编译源程序,不少人就只好重新安装一遍Linux。其实并不需要这样做,虽然从tar包来安装Linux的C开发环境对于初学者来说比较难,但是我们还是可以通过rpm包来迅速安装Linux的C开发环境的。下面以RedHat7.3为例,介绍如何安装Linux的C开发环境,如果是更高版本的RedHat也可以参考,只是要注意软件版本的不同。
- L4 \7 s' R1 h; D. G- g
/ g. \3 V, U. a/ Y) B6 ?/ ? 由于gcc包需要依赖binutils和cpp包,另外make包也是在编译中常用的,所以一共需要8个包来完成安装,它们是:
7 ^1 q# h# o3 f$ g3 `& G
8 w* ]0 Y {8 i3 x* t# N4 ~
cpp-2.96-110.i386.rpm
1 b- b/ D0 U" K
5 A- z0 A) M+ T binutils-2.11.93.0.2-11.i386.rpm
$ l6 o, D( W$ X) O3 c* ^ G
, W: N i" Y$ b/ d2 z glibc-2.2.5-34.i386.rpm
0 m' Q5 y6 U D$ O0 R5 @8 ?3 H
# Y9 A' l# F8 ?( F# f t; c( P% H glibc-kernheaders-2.4-7.14.i386.rpm
' ~2 h0 w; D( c, H' ]
* K8 ^; L4 z3 h+ Z8 O$ ~ glibc-common-2.2.5-34
' Y7 r6 b" J6 M7 F0 F' c0 \7 O% W5 i- y: O6 G1 \1 \0 D
glibc-devel-2.2.5-34.i386.rpm
' f+ t/ k6 O6 n9 Q. J" m/ q! `. b% x
4 W! j. d, F5 L+ ?8 o- S1 }
gcc-2.96-110.i386.rpm
& O9 U; B/ w. v2 D& U% o, Z[color=#FFFFFF']
7 _" ?% O& }+ d0 [! G; ]9 t& i
% z- x; ]* u8 R8 `
9 u4 D; u. p1 r$ C make-3.79.1-8.i386.rpm如果连在internet上的话,可以直接从internet上安装,命令依次如下:
) p6 X* u- m) U2 z" y3 f, c. C
; Z" n1 E) s& Z6 T! y rpm-ivh
# O m% X% k/ T
# W7 ^6 C0 M% g* o. y: H
ftp://216.254.0.38/linux/redhat/ ... p-2.96-110.i386.rpm
3 S. j/ Y& P: R; s
, }3 |; N( Y. `7 B' h rpm-ivh
+ W& [# h5 \+ |( H& Q: r- H, J, B5 q6 }1 g0 U: J7 u* P0 Q
ftp://216.254.0.38/linux/redhat/ ... .93.0.2-11.i386.rpm
" F. c8 t6 e4 ?! O
! o( h+ |( x- i3 {% l1 t2 | rpm-ivh
& u' Q3 g+ v! e: ]6 N: A, n
: k3 Y7 E+ _- [ ftp://216.254.0.38/linux/redhat/ ... s-2.4-7.14.i386.rpm
- F2 M7 F' a) Z/ r7 _; O" N; }. h/ r
rpm-ivh
& o, g- G5 }' `% [3 O$ y! V! W- j7 A8 j* q9 W) {. l9 d5 A0 c+ O
ftp://216.254.0.38/linux/redhat/ ... c-2.2.5-34.i386.rpm
( P) J, ^3 d( M) w+ g- X' q2 b+ I# e" t
rpm-ivh
0 G9 t: M5 R1 }
5 C# i6 F8 P, T' C1 W6 c m; h" F" ` ftp://216.254.0.38/linux/redhat/ ... l-2.2.5-34.i386.rpm
" O, Y$ F# S; s) [0 e7 q0 \7 I" X1 M* C) a$ y+ S/ U
rpm-ivh
( }8 n8 W: z6 V# ~$ C# d) B0 i: E& y! D. g
ftp://216.254.0.38/linux/redhat/ ... n-2.2.5-34.i386.rpm
% E/ K% m/ y$ o. Z8 v. N& {
' W9 @# v6 |+ y+ {* U rpm-ivh
- v' U3 w6 P) M
, B+ j6 M* {3 \' l4 R
ftp://216.254.0.38/linux/redhat/ ... c-2.96-110.i386.rpm
$ N! w- D, I5 @" t( Z
. |: W* h- o% |+ _ rpm-ivh
, B* D4 L% d& j9 H# W
8 U2 u! N( P, s7 y& ^1 A ftp://216.254.0.38/linux/redhat/ ... e-3.79.1-8.i386.rpm
5 {; l+ Z$ y ]$ b
$ m- D; N! ?: | 如果不是连在internet上的话,就要
下载下来安装了。安装完后,就构成了最基本的C开发环境,在这个C开发环境中,可以编译多数的C写的应用程序。而对于一个C程序来说,安装完成后通常可以分成三个组成:
* ~ E/ A8 n6 C4 @* p/ M2 f- e1 I; a0 v: o
1.可执行文件
! n9 V; w$ h0 _/ R4 b. T9 z1 k* ~. L) |, E
2.包含文件
! G$ c$ U6 q9 @) s) t2 p2 W
* ~+ L: x$ A, ~, L; | 3.库文件
/ z" g: v" D; N- [8 ]
9 Z4 v: X; D* p9 ]1 `, x. f 可执行文件就是最终运行的命令,包含文件是该C程序include的一些定义文件,库文件则是该C程序自定义的库。比如对于用RPM安装的MySQL:可执行文件放在/usr/bin下,包含文件放在/usr/include/mysql下,库文件在/usr/lib/mysql下。只有系统可以找到程序对应的包含文件和库文件,程序可执行文件才能正常运行。
7 j8 O* A, M3 X& d& }; ~1 U8 a
/ j: n2 n" G, M' F; A 了解了Linux的C开发环境的构成和安装,还是不够的,还需要对其深入研究和学习,才能够做到“知其然,知其所以然”。热门推荐:谈超频的概念及方法2004年十大热门
显卡超频王