一、源码编译过程

  源码  ---》 预处理 ---》 编译 ---》 汇编 ---》 链接 ---》执行

   我们可以把它分为三部分来完成: ./configure --->  make ---> make  install。其中,make完成了编译汇编的过程,是根据makefile文件来完成的;makefile是configure根据makefile.in的模板来生成的;makefile.in是由一个叫做automake的工具生成的。make  install执行的过程是把编译好的二进制文件复制到指定目录。

二、安装nginx的过程

   1)第一步:./configure [option]              # 常用参数如下,若想了解,使用--help查看即可

   作用:1.用户可以通过选项传递参数给configure脚本,一指定启动的功能特性、安装路径;二configure脚本在执行过程中会参考用户的指定以及makefile.in文件来生成makefile文件。2、检查程序指定要启用的功能特性锁依赖的外部环境。

   # 首先,我们按照好的参数,进行makefile文件的生成,会出现以下结果:(由于缺少gcc编译器)

   解决方法: yum  install  gcc  -y         # 安装gcc编译器

   # 当编译器安装好之后,再次执行操作,会出现另一个问题(缺少依赖包):

解决方法: yum  install  -y   pcre-devel.x86_64

解决方法: yum  install -y  openssl-devel

   # 依赖包解决之后,再次执行命令,则会生成makefile文件

   2)make

   作用:它会执行真正的编译操作,但make本身并不是编译器,它只是一个项目构建工具;make会根据生成的makefile文件 ,调用编译器gcc来编译应用的程序(生成机器语言) 。

   3)make  install 

   作用:在make执行完成之后进行的操作,它会在当前目录下创建出已经编译完成的目标二进制格式的程序(包含二进制程序,库文件,配置文件、帮助文档等);而make  install则进行安装已经编译好的程序包(二进制程序、库文件、配置文件、帮助文档等)并复制到用户指定的各个目录下。

   注意:1.我们在进行源码包的操作之前,首先要在官网上下载源码包(一般为bz2或gz形式,若包中含有install文档可以进行查看),接着在目录下解压源码包,解压一般使用命令: tar zxf 软件包名。2、上面make之后,可以使用make clean 将编译的参数清空,接着重新make。3、若configure发现错误,可使用makedistclean,将configure参数全部清空,接着重新./configure --》 make ---》 make  install。

linux下c语言源码编译的更多相关文章

  1. Linux下搭建redis(源码编译)

    [准备环境] Linux centos7 redis下载包  地址:http://www.redis.cn/download.html  前往下载稳定版本 [步骤] 1.下载成功后 把包上传到服务器 ...

  2. nginx在linux下安装(源码编译)

    下载 http://nginx.org/en/download.html 安装 安装依赖 yum -y install gcc gcc-c++ zlib zlib-devel pcre-devel o ...

  3. linux下获取软件源码包 centos/redhat, debian/ubuntu

    linux下获取软件源码包 centos/redhat, debian/ubuntu centos下: 1. yum install yum-utils 主要为了获取yumdownloader 2. ...

  4. Linux 安装node.js ---- 源码编译的方式

    一 : 普通用户: 安装前准备环境: 1.检查Linux 版本 命令: cat /etc/redhat-release 2.检查 gcc.gcc-c++ 是否安装过 命令: rpm -q gcc rp ...

  5. Win下Jenkins-2.138源码编译及填坑笔记

    源码编译篇 1.  安装JDK1.8-181,操作系统添加JDK环境变量.Java -version验证一下. 注:Jenkins2.138版本,JDK必须jkd1.8.0-101以上,不支持Java ...

  6. linux下对rpm源码手工打补丁

    前言 通常情况rpm包组件管理方式下的linux环境,常用打补丁的方式只有一种:修改spec文件定义的Patch和patch字段,其实spec文件中调用的底层命令还是patch.  因为业务需要要编译 ...

  7. linux软件安装(rpm,源码编译)

    1.rpm(redhat package manager)管理器主要目的在于解决软件的安装.卸载.升级.查询.验证等,例如升级过程中,保留软件的配置文件,安装过程中,检查软件依赖的库文件,以及卸载过程 ...

  8. windows10下如何进行源码编译安装tensorflow

    1.获取python3.5.x https://www.python.org/ftp/python/3.5.4/python-3.5.4-amd64.exe 2.安装python3.5.x,默认安装即 ...

  9. redis在centos7下安装(源码编译)

    下载 地址:http://www.redis.cn/download.html 下载稳定版本 把安装包上传到服务器 linux下安装 解压 进入解压后的目录,编译 创建目录,安装并指定目录 修改配置 ...

随机推荐

  1. 一幅图秒懂LoadAverage(转载)

    转自:http://www.habadog.com/2015/02/27/what-is-load-average/ 一幅图秒懂LoadAverage(负载)   一.什么是Load Average? ...

  2. jqgrid动态填充select

    前两天使用jquery动态填充jqgrid的select,默认随便用一个dict填充(初始化页面是会替换掉),用着可以,后来发现当行数增多,回到以前行继续编辑发现select又变成了那个用来避免报错随 ...

  3. CSS Pseudo-classes(伪类)

    CSS Pseudo-classes(伪类) CSS伪类是用来添加一些选择器的特殊效果. 一.语法 伪类的语法: selector:pseudo-class {property:value;} CSS ...

  4. 安卓Android第三方登录-QQ登录

    要实现QQ第三方登录,其实只需要一个封装类:QQLoginManager 几乎 三行代码 就实现QQ登录功能 这里先给出Github开源项目地址,项目下有详细的使用说明   下面就开始详细说一说怎么实 ...

  5. 为什么@EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.class})

    Spring Boot会自动根据jar包的依赖来自动配置项目,例如当你项目下面有HSQLDB的依赖,Spring Boot会自动创建默认的内存数据库的数据源DataSource, 但我们使用Mybat ...

  6. swift学习笔记 - 判断当前运行的系统和平台

    最近代码需要判断代码运行的系统与平台,下面总结了一下swift下一些可以用来判断的属性: // 代码运行在32位的 Windows public var TARGET_OS_MAC: Int32 { ...

  7. 异步:asyncio和aiohttp的一些应用(2)

    转自:原文链接:http://www.cnblogs.com/ssyfj/p/9222342.html 1.aiohttp的简单使用(配合asyncio模块) import asyncio,aioht ...

  8. 防止xss(脚本攻击)的方法之过滤器

    一  什么是脚本注入 概念我就不说了 直接百度一份 XSS是一种经常出现在web应用中的计算机安全漏洞,它允许恶意web用户将代码植入到提供给其它用户使用的页面中.比如这些代码包括HTML代码和客户端 ...

  9. CBT怎样进行注册

    CBT币未来升值千倍?揭秘为何比特云币注册认证送矿机? 比特云币先机先机,1月6号准备启动,虚拟货币新宠云比特(Cloud Bit 简称CBT)将于近日强势登陆交易市场.这款由全球最大的比特矿工联盟发 ...

  10. Git出现fatal: Unable to find remote helper for 'https'

    使用Git远程获取代码 git clone https://github.com/twlkyao/findfile.git 出现“fatal: Unable to find remote helper ...