make编译安装_学习笔记

时间:2017.11.30
作者:李强
参考:man,info,magedu讲义,神奇的internet
声明:以下英文纯属个人翻译,英文B级,欢迎纠正,以下内容纯属个人理解,并没有对错,只是参考,盗版不纠,才能有限,希望不误人子弟为好
操作环境:CentOS Linux release 7.4.1708

我们我们编译的对象是什么是一些源码
c,c++
java
perl
python
等的源码

源码如何去获取。
开源项目可能有哪些人开发,
项目基金会:FSF,ASF等,他们会有自己的官网供下组
项目组:几个人等
小程序:个人
因为不会为一个程序单独建一个站点供大家下载所以,针对这些开源项目的源码,会集中放置在某些网站中去,
当然这些网站是由大公司维护的,比如google等,
https://code.google.com/(这个被墙了
https://sourceforge.net/
https://github.com/

通过gcc可以编译c但是一个软件可能由几万个c文件来组成而且不同文件的编译顺序也是有甘系的
所以就有了GNU/make 项目管理工具来编译,这个工具可有yum grouplist development tools 包组提供这个功能。
make编译安装_学习笔记
通过我们获取源码为package-version.tar.[gz|bz2|xz]等格式的文件,里面有
configure
makefile.in 
程序员通过aufoconf:工具来生成configure脚本。configure 通常会定义安装的目录和提供的特性或功能等等。结果就是根据make.in 来生成makefile文件
automake:生成make.in 配合configure脚本来生成makefile文件
然后通过make命令来编译软件
然后通过make install 来完成文件的复制,把各个文件复制到软件定义的指定目录。
重要的过程就是在configure的地方你要知道你需要软件的哪些特性等要自定义软件。
编译安装说白了就是自定义软件安装。什么安装目录啊,什么功能特性啊,比如我就不要ssl啊,我就放一个html网页自己玩,结果我要把ngix,apache所有的功能都装上没必要。我就要支持ntfs啊,自定义版本,不使用发行版本。发行版本的用户软件或者操作系统软件。

所以我们编译的步骤就是
1、准备编译环境

  • 安装make,gcc等工具通过使用yum groups install "development tools" 获取。
  • 不通软件再通过.configure 检查编译环境的时候也会需要安装一些deps 组件,这里可以提前安装完毕,一般都是那些不会改变,当然也可以执行configure去检查编译环境缺什么补什么,一般都需要缺的后面加上-devl

2、获取编译软件,定义编译工作路径
mkdir workstation ,在哪里干活。
然后wget 获取相关的源码,
cd workstation ,进入目录,tar -xf package-version.tar.gz|bz2|xz 解压到当前路径
然后ls package-version 检查configure和make.in 文件是否存在
查看README和INSTALL文件,了解如何编译这个软件。
然后.configure 运行脚本,检查编译环境同时定义相关安装选项和功能
configure 脚本的通用功能:
1)、定义安装路径:
--prefix=/usr/local/package-name
--sysconfdir=/etc/package-name
2)、指启用或禁用相关特性
--enable-feature:例如--enable-so
--disable-feature:例如--disable-socket
3)、指定所依赖功能,

    不同的软件的configure可能后面跟的并不一样,因为他们的特性 不会一样,所以可以查看源码目录里的README文件,或者configure 后面加--help会有帮助。

    3、编译安装完成后,我们需要修改一些配置,
      头文件
        ln -sv  /usr/local/package-name/include   /usr/include/package-name
        库文件
  vi /etc/ld.so/config.d/package-name.conf
        /usr/local/package-name/modules
        让系统去重新加载库
        ldconfig 
        二进制文件
        vi /etc/profile.d/package-name.sh
        PATH=/usr/local/package-name/man/bin|sbin;$PATH
        重新生成PATH变量
        . /etc/profile.d/package-name.sh
        帮助文件
         vi /etc/man_db.conf 
         MANDB_MAP       /usr/local/package-name/man 
 注意的是:
     因为编译的文件,如果没有uninstall的脚本是不能自动卸载的,就像windows下你把目录清空了,但是它的注册表信息还在,在linux下也一样,你的一些配置文件也还在成为了垃圾文件。因此我们最好只指定--prefix=/usr/local/package-name  --sysconfdir=/etc/package-name,一个是自己的软件的安装路径,一个配置文件的路径,其他的都放置在你的--prefix指定的安装目录下,便于维护。最好是能在安装目录下记录下各项操作,这样方便以后卸载。或者自己创建一个install和unstall的自动化编译和卸载脚本放在安装目录下。
     因为httpd服务需要使用80端口,如果你的端口被占用会导致你的apachectl start 无法启动

下面我们来编译apache软件。
 1、准备编译环境
 2、下在安装源码
 3、三步骤
 4、修改相关配置文件。试运行。

本文转自 lajifeiwomoshu 51CTO博客,原文链接:http://blog.51cto.com/lajifeiwomoshu/2046263


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值