关键词:
1. 源码编译介绍
源码安装就是将开发人员写好的源码文件进行手动编译安装。目前开源软件,并不是所有的源代码都打成包,如果想使用开源软件,是需要自己下载进行编译安装。需要进行编译安装的场景:
- 软件提供商没有做打包的操作(也就是编译源码)
- 生产环境需要软件的某些特性,需要编译安装。
但是源码编译安装是比较繁琐的一个过程,好在前辈们已经提供了相关的项目管理工具,这大大降低了编译过程的复杂性
2. 开源程序源代码的获取
项目官方自建站点:
- apache.org
- nginx.org
- ....
代码托管:
3. 编译源码的项目工具
C、C++的源码编译:
- make项目管理器
- configure脚本-->Makefile.in-->Makefile
相关开发工具
- autoconf:生成configure脚本
- automake:生成Makefile.in
Java的源码编译:
- Maven(这里暂时不做过多的介绍)
4. C语言源代码编译安装过程
利用编译工具,通常只需要三大步骤:
- ./configure
- make
- make install
第一步:
./configure
- 拿到源码包后,解压完成后进入解压目录,阅读目录中的INSTALL/README文件,只需要查看其中如何安装的部分即可;
- 解压后目录中通常还有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 安装后的配置
- 二进制程序目录导入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
- 按需求定制服务启动脚本,且考虑是否加入开机启动项
- 输出头文件和库文件
# 输出头文件
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
- 导出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
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 使用客户端测试
如何获取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如果安... 查看详情