目前决大多 数的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

开发环境的构成和安装,

还是不够的,

还需要对其深入研究和学习,

才能够做到“知其然,知其所以然”

linux搭建C开发环境的更多相关文章

  1. linux搭建PHP开发环境

    因为PHP是一门易于上手的开发语言,所以现在越来越多的初创公司选择PHP作为前期项目的主要开发语言. 工欲善其事,必先利其器! 现在我们就从最基本的环境搭建开始,PHP环境的搭建是非常简单的: 环境: ...

  2. Linux搭建JavaEE开发环境与Tomcat——(十)

    服务器通过ip地址访问是不需要备案的,如果通过域名访问的话才需要备案. 1.安装Mysql 在CentOS7上安装MySQL时,出现了以下的提示: 原因是: CentOS7带有MariaDB而不是my ...

  3. Linux——搭建PHP开发环境第四步:composer

    原文链接:https://my.oschina.net/jiangbianwanghai/blog/473249 1.下载composer.phar [root#localhost opt]# cur ...

  4. Linux——搭建PHP开发环境第三步:mysql

    原文链接:http://www.jb51.net/article/83647.htm 1.第一步就是看linu是否安装了mysql,经过rpm -qa|grep mysql查看到centos下安装了m ...

  5. Linux——搭建PHP开发环境第二步:PHP

    原文链接:http://www.2cto.com/os/201511/450258.html ##### PHP 编译安装 #### [root@localhost ~]# yum install l ...

  6. Linux——搭建PHP开发环境第一步:apache

    原文链接:http://www.2cto.com/os/201511/450258.html ##### Apache 编译安装[root@localhost ~]# yum install gcc ...

  7. linux搭建stm32开发环境

    下载stm32固件库 创建目录 libs目录放stm32固件库,src放用户源码,inc放用户头文件 # mkdir libs src inc 复制文件 将STM32F10x_StdPeriph_Li ...

  8. Linux设备驱动开发环境的搭建(转)

    经过两周的摸索,终于对Linux设备驱动开发有了个初步的认识,下面对Linux设备驱动开发环境的搭建做个小结,以方便自己以后查询,同时也能给同道的初学者一点帮助. 刚接触Linux设备驱动时,初学者往 ...

  9. linux(ubuntu)和windows下面快速搭建android开发环境

    在windows和linux下面搭建android开发环境,一般要安装以下几个软件: 1.JDK安装 2.Eclipse安装 3.Android SDK安装 4.在eclipse里面安装ADT 5.e ...

随机推荐

  1. php如何优雅地把数组传递给前端js脚本?

    比如说http://echarts.baidu.com/demo...这个例子中,一般里面的timeData数组都是数据库的所有记录的单独某一个列的集合,而例子中第149行的 data:[ 1,2,3 ...

  2. JS模块化编程(一):CommonJS,AMD/CMD

    前言 模块化是什么? 为什么采用模块化? 场景: 一个html,因不同的业务需求开发,会不断的引入js文件.另外,a.js和b.js中的变量或函数必须是全局的,才能暴露给使用方. <script ...

  3. #JS 前端javascript规范文档

    一.规范目的 为提高团队协作效率,便于前端后期优化维护,输出高质量的文档. 二.基本准则 符合web标准,结构表现行为分离,兼容性优良.页面性能方面,代码要求简洁明了有序, 尽可能的减小服务器负载,保 ...

  4. 牛客练习赛16 E - 求值

    题目大意: 链接:https://www.nowcoder.com/acm/contest/84/E 给定n个数字a1, a2, ..., an. 定义f(l, r) = al | al+1| ... ...

  5. 028 -bash-4.1$ 出现故障的原理及解决办法?

    最近在搭建分布式的时候,出现了这个问题,很不爽.下面是我的解决方式. 1.在用户下删除bash rm -rf /home/beifeng/.bash* 2.拷贝 cp /etc/skel/.bash* ...

  6. JedisConnectionException: java.net.ConnectException: Connection refused

    出现问题 我遇到的一个问题,在连接redis的时候出现了错误!错误如下: JedisConnectionException: java.net.ConnectException: Connection ...

  7. 领英Linkedin信息搜集工具InSpy

    领英Linkedin信息搜集工具InSpy   领英Linkedin是一个知名职业社交媒体网站.通过该网站,渗透测试人员可以获取公司内部组成和员工信息.Kali Linux提供一款专用的信息收集工具I ...

  8. zookeeper 节点启动时的更新机制

    使用zk的应用节点和zk数据本身的同步,当系统启动时使用zk配置的信息和zk本身存储不一致, 此时应存在一个更新机制将应用配置数据和zk数据更新一致. 启动时更新拉取zk配置中心的更新本地数据,以zk ...

  9. BSGS算法学习

    嗯哼大步小步法. 一个非常暴力的想法. 注意到如果设C = ⌈√P⌉,那么任何一个数都可以写 成a1 * C + b1的形式,其中a1, b1 都< C. 那么预处理出A^i*C的值.然后在询问 ...

  10. [TC13761]Mutalisk

    [TC13761]Mutalisk 题目大意: 有\(n(n\le20)\)个坏人,第\(i\)个坏人的血量为\(A_i(A_i\le60)\).你可以每次攻击\(3\)个坏人,并分别造成\(9\)点 ...