Linux下C开发环境的构成和安装

本文介绍了Linux的C开发环境的构成和安装,使读者对Linux的C开发环境能有初步的了解。

  你了解Linux吗?相信现在越来越多的人会说“是”的。那么你了解到何种程度呢?不可否认,目前决大多 数的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开发环境的构成和安装,还是不够的,还需要对其深入研究和学习,才能够做到“知其然,知其所以然”。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/535578.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Shell脚本——变量

变量是任何一种编程语言都必不可少的组成部分,变量用来存放各种数据。脚本语言在定义变量时通常不需要指明类型,直接赋值就可以,Shell 变量也遵循这个规则 在 Bash shell 中,每一个变量的值都是字符串,无论你给变量赋值…

基础环境安装脚本

#/bin/bash # Check if user is root if [ $(id -u) ! "0" ]; thenecho "Error: You must be root to run this script, please use root"exit 1 fiecho "安装环境包"if [ -f /etc/yum.repos.d/rhel-source.repo ];thenrm -r /etc/yum.repos.d…

Apache 虚拟主机的配置[Ubuntu]

基本配置 我们都知道,如果我们想在单台机器上设置多个域名或主机名时,我们就要用到基于名称的虚拟主机了。那么要如何进行设置呢?这就是本 HowTo 想解决的问题了。在 Ubuntu 的 /etc/apache2/ 目录下有个 Apache2 的主配置文件 apache2.conf…

Shell脚本——数字计算

Shell 和其它编程语言不同,Shell 不能直接进行算数运算,必须使用数学计算命令 要想让数学计算发挥作用,必须使用数学计算命令,Shell 中常用的数学计算命令如下表所示。 运算操作符/运算命令说明(( ))用于整数运算,效率…

windows下最好的C++ IDE

1. 你是不是用惯了VC6.0?假如是,我现在推荐的IDE仍然是VC6.0的IDE。 2. 你是不是觉得VC6.0过时了,很多C语法它都不支持?我现在推荐的编译器她在一直发展着,支持最新的C语法。 3. VC.net的界面弱智,而且包含…

Shell脚本——内置命令

一、内置命令 所谓 Shell 内置命令,就是由 Bash 自身提供的命令,而不是文件系统中的某个可执行文件。 例如,用于进入或者切换目录的 cd 命令,虽然我们一直在使用它,但如果不加以注意很难意识到它与普通命令的性质是不…

Shell脚本——基础语法

一、条件判断 1.1、基本语法 [ condition ](注意condition前后要有空格) 注意:条件非空即为true,[ abcdef ]返回true,[] 返回false。 1.2、常用判断条件 两个整数之间比较 字符串比较 -lt 小于(less …

#2002 - 服务器没有响应 (or the local MySQL server's socket is not ...

经常见有兄弟遇到这样的问题: mysql -u root -p一切正常,但是用phpmyadmin却死活不对,提示如下错误: #2002 - 服务器没有响应 (or the local MySQL servers socket is not correctly configured) 我 google 了一下,发现…

第一个Scala程序——Hello World!

一、交互式编程 交互式编程不需要创建脚本文件,可以通过以下命令调用: $ scala Welcome to Scala 2.13.3 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_231). Type in expressions for evaluation. Or try :help.scala> println("Hello Wo…

CENTOS5下VSFTPD的设置

需求:(虚拟用户分下载用户/下载、上传但不能删除用户/管理用户) 一、安装 yum -y install vsftpd* yum -y install pam* yum -y install db4* 二、系统帐户 1、vsftpd服务的宿主用户 useradd vsftpd -s /sbin/nologin 2、…

Scala基础语法

如果你之前是一名 Java 程序员,并了解 Java 语言的基础知识,那么你能很快学会 Scala 的基础语法。 一、基本语法 Scala 基本语法需要注意以下几点: 区分大小写 - Scala是大小写敏感的,这意味着标识Hello 和 hello在Scala中会有不…

DNS详解

一、DNS 概念 人和人要互相识别和记忆,需要名字作为辅助,而对于网络世界,在因特网内也需要一种命名系统来做类似的事情,该系统使用了域来划分,任何一个网络里的主机(或者路由器)都有独一无二的域名(类似国家代码),域又能继续划分为子域(类似每个国家有不同的省份代…

Shell脚本——函数

Shell 函数的本质是一段可以重复使用的脚本代码,这段代码被提前编写好了,放在了指定的位置,使用时直接调取即可。 一、语法 Shell 函数定义的语法格式如下: function name() {statements[return value] }对各个部分的说明&#…

scala通过JDBC进行数据库操作

scala通过JDBC方式操作mysql (需要加载 mysql-connector-java 驱动) maven依赖&#xff1a; <dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.45</version></dependency>一…

Linux下Java的安装与配置

0、下载好JDK安装包后上传到Linux服务器的/usr/local/java/下 1、解压tar -zxvf jdk-8u251-linux-x64.tar.gz 2、改名mv jdk1.8.0_251 jdk1.8 3、配置环境变量vi /etc/profile 添加以下内容 #JAVA export JAVA_HOME/usr/local/java/jdk1.8 export JRE_HOME$JAVA_HOME/jre e…

运维同步rsync

Rsync(remote rynchronization)是一款开源的、快速的、多功能的、可实现全量以及增量的本地或者远程数据同步的备份的优秀工具&#xff0c;可使本地主机不同分区或目录之间及本地和远程两台主机之间的数据快速同步镜像&#xff0c;远程备份等功能同时它在同步文件的同时可以保…

Spark初识-什么是Spark

Spark是一个基于内存的开源计算框架&#xff0c;于2009年诞生于加州大学伯克利分校AMPLab&#xff08;AMP&#xff1a;Algorithms&#xff0c;Machines&#xff0c;People&#xff09;&#xff0c;它最初属于伯克利大学的研究性项目&#xff0c;后来在2010年正式开源&#xff0…

系统优化

1、关闭selinux sed -i ‘s/SELINUXenforcing/SELINUXdisabled’ setenforce 0 2.精简开机服务 ntsysv setup system service

Spark初识-Spark与Hadoop的比较

Spark&#xff0c;是分布式计算平台&#xff0c;是一个用scala语言编写的计算框架&#xff0c;基于内存的快速、通用、可扩展的大数据分析引擎 Hadoop&#xff0c;是分布式管理、存储、计算的生态系统&#xff1b;包括HDFS&#xff08;存储&#xff09;、MapReduce&#xff08;…

Spark初识-Spark基本架构概览使用

当需要处理的数据量超过了单机尺度(比如我们的计算机有4GB的内存&#xff0c;而我们需要处理100GB以上的数据)这时我们可以选择spark集群进行计算&#xff0c;有时我们可能需要处理的数据量并不大&#xff0c;但是计算很复杂&#xff0c;需要大量的时间&#xff0c;这时我们也可…