[华为云在线课程][Linux平台软件包安装与管理][第五章程序包编译][学习笔记]

举报
John2021 发表于 2022/03/31 06:02:20 2022/03/31
【摘要】 源码编译介绍程序包编译安装:源代码->预处理->编译->汇编->链接->执行多文件:文件中的代码之间,很可能存在跨文件依赖关系虽然有很多开源软件将软件打成包,供用户使用,但并不是所有源代码都打成包,如果想使用开源软件,可能需要自己下载源码,进行编译安装。另外即使提供了包,但是生产中需要用于软件的某些特性,仍然需要自行编译安装。但是利用源代码编译安装是比较繁琐的,庆幸的是有相关的项目管理工具...

源码编译介绍

程序包编译安装:
源代码->预处理->编译->汇编->链接->执行
多文件:文件中的代码之间,很可能存在跨文件依赖关系
虽然有很多开源软件将软件打成包,供用户使用,但并不是所有源代码都打成包,如果想使用开源软件,可能需要自己下载源码,进行编译安装。另外即使提供了包,但是生产中需要用于软件的某些特性,仍然需要自行编译安装。但是利用源代码编译安装是比较繁琐的,庆幸的是有相关的项目管理工具可以大大减少编译过程的复杂度。

开源程序源代码的获取

项目官方自建站点:

代码托管:

编译源码的项目工具

  • C、C++的源码编译:使用make项目管理器
    configure脚本->Makefile.in->Makefile
    相关开发工具:
    autoconf:生成configure脚本
    automake:生成Makefile.in

  • Java的源码编译:使用Maven

C语言源代码编译安装过程

利用编译工具,通常只需要三个大的步骤

  • ./configure
    1. 通过选项传递参数,指定安装路径、启用特性等;执行时会参考用户的指定以及Makefile.in文件生成Makefile
    2. 检查依赖到的外部环境,如依赖的软件包
  • make 根据Makefile文件,会检测依赖的环境,进行构建应用程序
  • make install:复制文件到相应路径

注意:安装前可以通过查看README、INSTALL获取帮助

编译安装准备

准备:安装相关的依赖包

  • 开发工具:make,gcc(C/C++编译器GNU C Compiler)
  • 开发环境:开发库(glibc:标准库),头文件,可安装开发包组Development Tools
  • 软件相关依赖包

生产实践:基于最小化安装的系统建议安装下面包

yum install gcc make autoconf gcc-c++ glibc glibc-devel pcre pcre-devel openssl openssl-devel systemd-devel zlib-devel vim lrzsz tree tmux lsof tcpdump wget net-tools iotop bc bzip2 zip unzip nfs-utils man-pages

编译安装

第一步:运行configure脚本,生成Makefile文件
其选项主要功能:

  • 可以指定安装位置
  • 指定启用的特性

获取其支持使用的选项

./configure --help

选项分类:

  • 安装路径设定:
    –prefix=/PATH:指定默认安装位置,默认为/usr/local/
    –sysconfdir=/PATH:配置文件安装位置
    System types:支持交叉编译

  • 软件特性和相关指定:
    Optional Features:可选特性
    –disable-FEATURE
    –enable-FEATURE[=ARG]
    Optional Packages:可选包
    –with-PACKAGE[=ARG] 依赖包
    –without-PACKAGE 禁用依赖关系

编译安装实战案例

官网下载并编译安装新版tree

例子:CentOS7编译安装tree

# 进入网站http://mama.indstate.edu/users/ice/tree/,下载tree压缩包
# 安装相关的依赖包
[root@localhost Downloads]# yum install gcc make
# 解压压缩包
[root@localhost Downloads]# tar xvf tree-1.8.0.tgz 
# 进入解压缩的目录,READMEINSTALL
[root@localhost Downloads]# cd tree-1.8.0
[root@localhost tree-1.8.0]# cat README 
[root@localhost tree-1.8.0]# cat INSTALL 
# 编译准备
[root@localhost tree-1.8.0]# vim Makefile
prefix = /apps/tree
# 编译
[root@localhost tree-1.8.0]# make
# 安装
[root@localhost tree-1.8.0]# tree

编译安装cmatrix

# 安装相关包
[root@localhost Downloads]# yum install gcc make autoconf ncurses-devel
# 下载并解压包
[root@localhost Downloads]# wget https://github.com/abishekvashok/cmatrix/releases/download/v2.0/cmatrix-v2.0-Butterscotch.tar
[root@localhost Downloads]# tar xvf cmatrix-v2.0-Butterscotch.tar 
# 配置安装
[root@localhost cmatrix]# ./configure 
[root@localhost cmatrix]# make
[root@localhost cmatrix]# make install
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。