在很多时候我们需要自定义软件的特性,这时就需要用到源码安装。那么,网上有很多编译源码的工具,那么,我们怎么知道别人使用的是什么工具呢。其实我也不知道(*^▽^*)。

那么本篇博客主要是写C代码的源码安装。

什么都不说,直接先上来总结源码安装的四步骤:

第一步:./configure:    【当然,我们在这步骤之前还必须解压源码包】
     (1) 通过选项传递参数,指定启用特性、安装路径等;执行时会参考用户的指定以及Makefile.in文件生成makefile
     (2) 检查依赖到的外部环境
第二步:make:
      根据makefile文件,构建应用程序;
第三步:make install

第四步:安装后的配置选项

【其实后两步很简单,重点是第一步和第四步】

上面只是小小的总结了一下,那么具体怎么实现的,GG

1、我们怎么去获取源码包

官方自建站点:
     apache.org (ASF)
     mariadb.org
                ...
代码托管:
     SourceForge
     Github.com
     code.google.com

2、就是一个大难题了,编译C源代码

前提:提供开发工具及开发环境
              开发工具:make, gcc等
              开发环境:开发库,头文件
                  glibc:标准库

通过“包组”提供开发组件
                    CentOS 6上面主要安装这两个开发包组件: "Development Tools", "Server Platform Development"

第一步:configure脚本

我们必须要提供一些参数给脚本:如指定安装位置、指定启用特性等,这时我们可以使用命令: ./configure --help 来获取其支持使用的选项。

选项分类:
Configuration:

Installation directories: 安装路径设定

--prefix=/PATH/TO/SOMEWHERE: 指定默认安装位置;默认为/usr/local/
    --sysconfdir=/PATH/TO/SOMEWHERE:配置文件安装位置;

System types: 目标系统平台结构  【注意:只有在交叉编译的时候才用到该选项】

Optional Features: 可选性

--disable-FEATURE
    --enable-FEATURE[=ARG]

Optional Packages: 依赖到的程序包,是定义依赖关系的

--with-PACKAGE[=ARG]
    --without-PACKAGE

Some influential environment variables: 可能会影响环境变量的东东

第二步:执行”make“命令

第三步:执行“make install”

到这里我们就可以启用了,现在到我们安装路径下去启动(因为我们还没有对程序进行配置)
 这里就简单的启动一下吧
      到我们安装位置,执行启动命令:如  ./apachectl start

第四步:安装成功后的配置选项:

(1)导出二进制程序目录至PATH环境变量中,【如果不导出的话我们只能够使用绝对路径访问他】
       编辑配置文件: /etc/profile.d/NAME.sh    创建一个脚本文件
                                在里面添加环境变量:export PATH=/PATH/TO/BIN:$PATH

(2)导出库文件路径
       编辑 /etc/ld.so.conf.d/NAME.conf       创建一个配置文件,添加新的库文件所在目录至此文件中
          让系统重新生成缓存: 命令:ldconfig [-v]

(3)导出头文件
        方法一:去安装目录下,把include头文件复制到/usr/include目录下
        方法二:基于链接的方式实现
            ln -sv 源文件  软连接文件
(4)导出帮助手册
        编辑 /etc/man..config 文件, 在里面添加一个MANPATH参数并指明路径就行了

最新文章

  1. python 学习笔记十七 django深入学习二 form,models
  2. java J2EE与DiscuzX3.2的UCenter实现单点登录
  3. 大姨吗向左,美柚向右,女性健康APP路在何方?
  4. LABJS使用教程
  5. 如何使用SAE的Storage
  6. SVG绘制矩形简单示例分享
  7. Swift - 06 - 数值类型转换和类型别名
  8. box-shadow 阴影
  9. 性能调优案例分享:Mysql的cpu过高
  10. PE知识复习之PE的各种头属性解析
  11. Mac解决某些命令失效问题
  12. Intellij Idea debug 模式如果发现异常,即添加异常断点在发生异常处
  13. python多进程apply与apply_async的区别
  14. IDEA - 使用总结
  15. Unescaped left brace in regex is illegal here in regex; marked by <-- HERE in m/\${ <-- HERE ([^ \t=:+{}]+)}/ at xxxx/usr/bin/automake line 3939.
  16. 20155234 《网络对抗》Exp 8 Web基础
  17. 我的Python之旅第五天---迭代器和生成器
  18. 2018.08.04 洛谷P3380 【模板】二逼平衡树(树套树)
  19. [ 原创 ]学习笔记-三种向ListView中填充简单文本的方法
  20. 【转发】Python使用openpyxl读写excel文件

热门文章

  1. Linux中进程杀掉总是自动重启
  2. Vue—新版本router-view 与 keep-alive 的互动
  3. Java类的组合
  4. 安全的字符串拷贝strcpy_s的实现与理解
  5. Oracle11gR2 sqlplus中可以执行上键查询backspace删除
  6. charles 常用功能(七)简易接口压力测试(repeat advance 功能)
  7. 简单dp水题
  8. 老猿学5G扫盲贴:R15/R16中计费架构和计费原则涉及的规范文档
  9. PyQt学习随笔:截获窗口Widget组件的关闭事件
  10. Day5 【Scrum 冲刺博客】