文档章节

linux搭建C开发环境

o
 onedotdot
发布于 2017/08/26 15:20
字数 1398
阅读 10
收藏 0
点赞 0
评论 0

目前决大多 数的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下。只有系统可以找到程序对应的包含文件和库文件,程序可执行文件才能正常运行。 

本文转载自:http://www.cnblogs.com/mingforyou/p/4118066.html

共有 人打赏支持
o
粉丝 6
博文 321
码字总数 14350
作品 0
朝阳
QT平台的手持媒体播放器项目如何去做?

一、本课程是怎么样的一门课程 1.1、课程的背景 Qt是一个1991年由奇趣科技开发的跨平台C++图形用户界面应用程序开发框架。它既可以开发GUI程式,也可用于开发非GUI程式,比如控制台工具和服务...

我是小北
2013/12/31
0
0
关于Linux操作系统下软件开发工具的选择

在Windows下开发软件有众多工具可以选择,并且都非常好用。学用的工具有VB,VC,VF,C#,DELPHI,POWERBUILDER,JBUILDER,ECLIPS等,可是在linux下找一个比较好的集成开发环境是比较困难的,我说的困...

jtihj
2009/12/19
0
5
android NDK 在Ubuntu10.04开发环境的搭建

最近可能要用到调用jni,我对NDK和Jni了解非常的少,今天根据网络上的一些博客搭建了一下NDK的开发环境,但是继续往下编译jni这些就不会了,如果有哪位看到了,希望能帮帮忙 下面我将今天搭建...

雨焰
2013/03/19
0
0
linux系统下集成开发工具选择

在Windows下开发软件有众多工具可以选择,并且都非常好用。学用的工具有VB,VC,VF,C#,DELPHI,POWERBUILDER,JBUILDER,ECLIPS等,可是在linux下找一个比较好的集成开发环境是比较困难的,我说的困...

sinpo
2012/02/29
0
0
ESP8266在Alios-Things上的入门开发指南 (一)开发环境搭建及HelloWorld固件

一、 开发环境搭建 目前国内大多数开发者使用的都是WinXP/Win7/Windows XX做MCU的开发。习惯Windows环境开发的朋友,如果一旦一接触到MCU需要是Linux环境来进行开发编译,第一反应理所应当是“...

行者武松
06/12
0
0
[编译] 3、在Linux下搭建51单片机的开发烧写环境(makefile版)

星期二, 10. 七月 2018 01:01上午 - beautifulzzzz 一、SDCC(Small Device C Compiler)编译环境搭建 SDCC是一个小型设备的C语言编译器,该编译器是标准C语言,可以编译Intel MCS51架构的微...

beautifulzzzz
07/11
0
0
用Eclipse+CDT+MinGW+SVN搭建跨平台的开发环境

Windows环境: 1、 安装Eclisp+CDT; 2、 安装MinGW,设置环境变量。例如: set path=%path%;D:"MinGW"bin set LIBRARY_PATH=D:"MinGW"lib set CINCLUDEPATH=D:"MinGW"include set CPLUSINCL......

iTeacher
2010/12/27
0
0
Apache 虚拟主机 VirtualHost 配置

虚拟主机 (Virtual Host) 是在同一台机器搭建属于不同域名或者基于不同 IP 的多个网站服务的技术. 可以为运行在同一物理机器上的各个网站指配不同的 IP 和端口, 也可让多个网站拥有不同的域名...

夏小八
2012/03/12
0
0
Vagrant 打造跨平台的开发环境

两个项目开发下来,因团队环境不一样,整合修bug成为了一件苦差事。虽然后来搭建了一台测试服务器,但是有时候受网络原因,还是不能连接到测试服务器上。因团队成员能力和习惯都不一样,有的...

cjp路人
2014/08/24
0
0
搭建树莓派交叉编译环境

本学期选了嵌入式开发课程,所以第一步就是要准备环境。硬件环境自不必说,购买了树莓派二代、sd卡,读卡器、路由器、网线这些都是以前就有的。软件环境的搭建包括如下几步: 1.搭建虚拟机L...

jch_zhao
2017/05/03
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

用Python绘制红楼梦词云图,竟然发现了这个!

Python在数据分析中越来越受欢迎,已经达到了统计学家对R的喜爱程度,Python的拥护者们当然不会落后于R,开发了一个个好玩的数据分析工具,下面我们来看看如何使用Python,来读红楼梦,绘制小...

猫咪编程
19分钟前
0
0
Java中 发出请求获取别人的数据(阿里云 查询IP归属地)

1.效果 调用阿里云的接口 去定位IP地址 2. 代码 /** * 1. Java中远程调用方法 * http://localhost:8080/mavenssm20180519/invokingUrl.action * @Title: invokingUrl * @Description: * @ret......

Lucky_Me
42分钟前
1
0
protobuf学习笔记

相关文档 Protocol buffers(protobuf)入门简介及性能分析 Protobuf学习 - 入门

OSC_fly
昨天
0
0
Mybaties入门介绍

Mybaties和Hibernate是我们在Java开发中应用的比较多的两个ORM框架。当然,目前Mybaties正在慢慢取代Hibernate,这是因为相比较Hibernate而言Mybaties性能更好,响应更快,更加灵活。我们在开...

王子城
昨天
2
0
编程学习笔记之python深入之装饰器案例及说明文档[图]

编程学习笔记之python深入之装饰器案例及说明文档[图] 装饰器即在不对一个函数体进行任何修改,以及不改变整体的原本意思的情况下,增加函数功能的新函数,因为这个新函数对旧函数进行了装饰...

原创小博客
昨天
0
0
流利阅读笔记33-20180722待学习

黑暗中的生物:利用奇技淫巧快活生存 Daniel 2018-07-22 1.今日导读 如果让你在伸手不见五指的黑暗当中生存,你能熬过几天呢?而大千世界,无奇不有。在很多你不知道的角落,有些生物在完全黑...

aibinxiao
昨天
6
0
Hystrix降级逻辑中如何获取触发的异常

通过之前Spring Cloud系列教程中的《Spring Cloud构建微服务架构:服务容错保护(Hystrix服务降级)》一文,我们已经知道如何通过Hystrix来保护自己的服务不被外部依赖方拖垮的情况。但是实际...

程序猿DD
昨天
1
0
gin endless 热重启

r := gin.New()r.GET("/", func(c *gin.Context) {c.String(200, config.Config.Server.AppId)})s := endless.NewServer(":8080", r)s.BeforeBegin = func(add string) ......

李琼涛
昨天
1
0
JAVA模式之代理模式

平时一直在用spring,spring中最大的特效IOC和AOP,其中AOP使用的就是代理模式.闲着无聊,随手写了一个代理模式,也记录下代理模式的实现Demo. 比如现在有一个场景是:客户想要增加一个新的功能,...

勤奋的蚂蚁
昨天
0
0
ES15-JAVA API 索引管理

1.创建连接 创建连接demo package com.sean.esapi.client;import java.net.InetSocketAddress;import org.elasticsearch.action.get.GetResponse;import org.elasticsearch.clien......

贾峰uk
昨天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部