源码包编译

author author     2022-12-08     595

关键词:


1. 源码编译介绍

源码安装就是将开发人员写好的源码文件进行手动编译安装。目前开源软件,并不是所有的源代码都打成包,如果想使用开源软件,是需要自己下载进行编译安装。需要进行编译安装的场景:

  1. 软件提供商没有做打包的操作(也就是编译源码)
  2. 生产环境需要软件的某些特性,需要编译安装。

但是源码编译安装是比较繁琐的一个过程,好在前辈们已经提供了相关的项目管理工具,这大大降低了编译过程的复杂性


2. 开源程序源代码的获取

项目官方自建站点:

代码托管:


3. 编译源码的项目工具

C、C++的源码编译:

  • make项目管理器
  • configure脚本-->Makefile.in-->Makefile

相关开发工具

  • autoconf:生成configure脚本
  • automake:生成Makefile.in

Java的源码编译:

  • Maven(这里暂时不做过多的介绍)


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

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

  • ./configure
  • make
  • make install

第一步:​​./configure​

  1. 拿到源码包后,解压完成后进入解压目录,阅读目录中的INSTALL/README文件,只需要查看其中如何安装的部分即可;

源码包编译_Linux系统

  1. 解压后目录中通常还有configure文件(也可能为config)文件。执行​​./configure​​或者带有选项参数,是检查系统环境是否符合安装要求,并将定义好的安装配置和系统环境信息写入Makefile文件中。里面包含了如何编译、启动的功能、安装路径等信息。


第二步:​​make​​ 执行make命令进行编译。manke命令会根据Makefile文件进行编译。编译工作主要是调用编译器(如gcc)将源码编译为可执行文件,通常需要调用一些函数库才能产生一个完整的可以执行文件


第三步:​​make install​

将上一步缩编的数据复制到指定的目录下(实际上官方提供可下载的rpm包安装时就是将数据复制到官方编译时所指定的目录中)


4.1 编译安装准备

准备安装相关的依赖包

  • 开发工具:make,gcc
  • 开发环境:开发库(glibc:标准库),头文件,等
  • 软件相关依赖包


4.2 编译安装

configure脚本的通用选项:

  • --prefix= # 指定安装的路径
  • sysconfdir= # 指定配置文件目录
  • enable-feature # 启用某个特性
  • --distable-feature # 禁用特性
  • --with-function # 启用某个功能
  • --without-function # 禁用某个功能

可使用 ​​./configure --help​​查看具体的帮助信息


4.3 安装后的配置

  1. 二进制程序目录导入PATH环境变量中

shell> echo "export PATH=/usr/local/apache/bin:$PATH" > /etc/profile.d/apache.sh
shell> chmod +x /etc/profile.d/apache.sh
shell> source /etc/profile.d/apache.sh

  1. 按需求定制服务启动脚本,且考虑是否加入开机启动项
  2. 输出头文件和库文件

# 输出头文件
shell> ln -s /usr/local/apache/include /usr/include/apache

# 输出库文件
shell> echo "/usr/local/apache/lib" >/etc/ld.so.conf.d/apache.conf
shell> ldconfig

  1. 导出man路径

shell> echo  "MANPATH /usr/local/apache/man" >> /etc/man.conf


5. 案例练习:阿里云ECS编译安装httpd

5.1 环境信息

[root@node30 ~]# cat /etc/redhat-release 
CentOS Linux release 7.6.1810 (Core)
[root@node30 data]# rpm -ql httpd
未安装软件包 httpd
[root@node30 data]# uname -r
3.10.0-957.el7.x86_64
[root@node30 data]# uname -m
x86_64


5.2 下载httpd源码包

Apache源码包下载地址:​​http://httpd.apache.org/download.cgi​

源码包编译_Linux系统_02

5.3 安装相关依赖包

root@node30 ~]# yum -y groupinstall "development tools"
[root@node30 ~]# yum -y install pcre-devel openssl-devel expat-devel
[root@node30 ~]# yum -y install gcc make autoconf apr-devel apr-util-devel


5.4 配置编译

[root@node30 httpd-2.4.43]# pwd
/data/httpd-2.4.43
[root@node30 httpd-2.4.43]# ls
ABOUT_APACHE BuildBin.dsp emacs-style LAYOUT NOTICE srclib
acinclude.m4 buildconf httpd.dep libhttpd.dep NWGNUmakefile support
Apache-apr2.dsw CHANGES httpd.dsp libhttpd.dsp os test
Apache.dsw CMakeLists.txt httpd.mak libhttpd.mak README VERSIONING
apache_probes.d config.layout httpd.spec LICENSE README.cmake
ap.d configure include Makefile.in README.platforms
build configure.in INSTALL Makefile.win ROADMAP
BuildAll.dsp docs InstallBin.dsp modules server

[root@node30 httpd-2.4.43]# ./configure --prefix=/data/http \\
> syscnotallow=/dat/etc/http \\
> --enable-ssl
[root@node30 httpd-2.4.43]# echo $?
0


5.5 编译并安装

[root@node30 httpd-2.4.43]# make -j 4 && make install
[root@node30 httpd-2.4.43]# echo $?
0


5.6 配置环境

[root@node30 http]# echo PATH=/data/http/bin:$PATH > /etc/profile.d/httpd.sh
[root@node30 http]# . /etc/profile.d/httpd.sh


5.7 使用apachectl自带脚本来管理服务

[root@node30 http]# apachectl start
[root@node30 http]# ss -ntl | grep 80
LISTEN 0 128 :::80 :::*


5.8 指定使用apache用户运行Apache程序

[root@node30 http]# useradd -r -s /sbin/nologin -d /var/www -c Apache -u 48 apache
[root@node30 http]# vim /data/http/conf/httpd.conf
User apache
Group apache
[root@node30 http]# apachectl restart


5.9 使用客户端测试

源码包编译_Linux系统_03

如何获取ubuntu源码包里面的源码进行编译(代码片段)

如何获取ubuntu源码包里面的源码进行编译1、在获取源码包之前,确保在软件源配置文件/etc/apt/sources.list中添加了deb-src项2、使用如下命令获取xxx源码包的详细信息:sudoapt-cacheshowsrcxxx这用来查询当前镜像站点中是否有该源码包... 查看详情

如何获取ubuntu源码包里面的源码进行编译(代码片段)

如何获取ubuntu源码包里面的源码进行编译1、在获取源码包之前,确保在软件源配置文件/etc/apt/sources.list中添加了deb-src项2、使用如下命令获取xxx源码包的详细信息:sudoapt-cacheshowsrcxxx这用来查询当前镜像站点中是否有该源码包... 查看详情

编译nginx源码包(代码片段)

源码包指的是开发编写好的程序源代码,但并没有将其编译为一个能正常使用的二进制工具,部分软件官网仅提供源码包,需要自行编译并安装,下面以nginx1.21.1版本为例;1.下载源码包在官网https://nginx.org/en/d... 查看详情

lamp源码编译

---恢复内容开始---1、LAMP源码编译的基础环境  安装组建包:yumgroupinstall"DevelopmentTools""DevelopmentLibraries"-y  安装编译包:yuminstallgccgcc-c++openssl-devel-y  下载源码包:   apr-1.6.3.tar.gz    mysql-5.6.38-linux- 查看详情

源码编译安装

...sp;   在日常管理工作中,大部分软件都是通过源码安装的。安装一个源码包,是需要我们自己把源代码编译成二进制的可执行文件。使用源代码的好处有可以自定义修改源代码,还可以定制相关的功能,因为源代码在... 查看详情

源码包安装

如何进行源码包安装?需要下载源码包(.tar.gz或.tar.bz2格式)上传到root根目录解压源码包cd进入源码包执行./configur命令(软件配置和环境检查)--prefile=安装路径(公认安装路径/usr/local/名字)  定义所需要的内容  检查安装环... 查看详情

sigar1.6.4源码包,编译

https://files.cnblogs.com/files/longchang/hyperic-sigar-1.6.4-src.tar.gz 解压后进入bindings目录,如果想编译java的库,进入java目录,执行ant命令就可以了。 查看详情

源码编译vim(代码片段)

目录获取最新版vim源码1git仓库clone2,源码包下载,里面有各个版本的vim压缩包vim配置选项配置示例参考文章tip获取最新版vim源码1git仓库clonegitclonehttps://github.com/vim/vim.git2,源码包下载,里面有各个版本的vim压缩包https://ftp.nluug.nl/pub... 查看详情

源码编译安装

除了用rpm、yum安装包外,还可以用源码编译安装源码包:代码可见的,要想在系统里运行,要翻译成机器语言,编译就是翻译的过程。源码包下载最好去官方网站以httpd为例下载地址650)this.width=650;"src="http://note.youdao.com/yws/res/1887/... 查看详情

yocto离线编译(代码片段)

...用yocto编译一个软件包时,一般会先在本地寻找下载好的源码包,如果不存在则根据配置从网络下载。添加本地源码包为了支持离线编译,添加一个包的配置文件后,需要在本地也准备好源码包。可以先打开网络连接,让yocto帮... 查看详情

mysql5.5源码包安装

注:由于mysql5.5的源码包安装与mysql之前的版本安装方法不同,故写一篇随笔记录。5.5的版本不再是./configuremakemakeinstall这里用到了cmake了,cmake是一个跨平台的编译工具。注意:mysql-5.5以后的版本不能使用make编译,只能使用cmake工... 查看详情

软件管理

软件管理    一、软件包分类      1、源码包          (脚本安装包)      2、二进制包           (RPM包、系统默认包)        二、源码包      源码包的有点... 查看详情

编译安装httpd

1、download源码包解压缩:tarxvfhttpd-2.4.25.tar.bz22、安装开发包组yumgroupinstall"Developmenttools"3、cd/apps/httpd/httpd-2.4.25(比如源码包在/apps/httpd目录下)切换到源码包里因为接下来安装的操作必须在安装源码包里面4、安装./configure--prefix=/APPS... 查看详情

centos怎么卸载源码编译的mysqlrpm-qagrepmysql找不到那个包

参考技术A源码编译的,直接把安装目录删掉就行,一般都安装在/usr/local/mysql/里。rpm-qa只能看见rpm的安装包,两码事。 查看详情

golang学习-基础命令

...客将做到:有问必答!! 一、gorun  用于运行命令源码文件,只能接收一个命令源码文件以及若干个库源码文件作为参数。先将源码文件编译成临时文件,然后再运行这个临时文件,临时文件可能包括可执行文件和归档文... 查看详情

cmake源码包安装后的卸载问题(代码片段)

cmake源码包安装CMake是一个跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的安装(编译过程),具体学习请移步官网CMake本文介绍的就是用cmake去安装的别人的包。一般流程:mkdirbuild//创建一个编译文件夹cdbuildcmake..... 查看详情

keepalived源码安装及编译遇到的错误

...nstall kernel-developenssl-devel popt-devel切换到keepalived的源码包目录cd/usr/local/src解压源码包tarzvxfkeepalived-1.2.24.tar.gz进入到keep 查看详情

源码编译安装lnmp环境

一、源码编译安装步骤首先说明源码安装的好处  速度快,可自定义路径主要有三步:1.配置进入源码安装包 ./configure--prefix=/uer/local/nginx 可指定参数--prefix为安装路径2.编译相当于rpm包 make3.安装makeinstall如果安... 查看详情