linux 源码包安装方法详解 linux安装源代码gcc命令步骤
nanshan 2024-12-22 19:55 20 浏览 0 评论
其实,在linux下面安装一个源码包是最常用的, 在日常的管理工作中,大部分软件都是通过源码安装的。安装一个源码包, 是需要我们自己把源代码编译成二进制的可执行文件。
如果你读得懂这些源代码, 那么你就可以去修改这些源代码自定义功能, 然后再去编译成你想要的。使用源码包的好处除了可以自定义修改源代码外还可以定制相关的功能, 因为源码包在编译的时候是可以附加额外的选项的。
源码包的编译用到了linux系统里的编译器, 常见的源码包一般都是用C语言开发的, 这也是因为C语言为linux上最标准的程序语言。Linux上的C语言编译器叫做gcc, 利用它就可以把C语言变成可执行的二进制文件。
所以如果你的机器上没有安装gcc就没有办法去编译源码。你可以使用 yum install -y gcc 来完成安装。
安装一个源码包,通常需要三个步骤:
1)./configure
在这一步可以定制功能, 加上相应的选项即可, 具有有什么选项可以通过 ./configure --help 命令来查看。在这一步会自动检测你的linux系统与相关的套件是否有编译该源码包时需要的库, 因为一旦缺少某个库就不能完成编译。
只有检测通过后才会生成一个Makefile文件。
其中--prefix指的是安装路径, --with指的是安装本文件所依赖的库文件
2) make
使用这个命令会根据Makefile文件中预设的参数进行编译, 这一步其实就是gcc在工作了。
3) make install
安装步骤, 生成相关的软件存放目录和配置文件的过程。
上面介绍的3步并不是所有的源码包软件都一样的, 安装步骤并不是这样, 也就是说源码包的安装并非具有一定的标准安装步骤。
这就需要你拿到源码包解压后, 然后进入到目录找相关的帮助文档, 通常会以INSTALL或者README为文件名。所以, 你一定要去看一下。
Linux下config/configure/Configure、make、make test/make check、sudo make install的作用
config / configure / Configure
这个是用来检测你的安装平台的目标特征的。比如它会检测你是不是有CC或GCC, 并不是需要CC或GCC, 它是个shell脚本
这一步一般用来生成 Makefile, 为下一步的编译做准备, 你可以通过在 configure 后加上参数来对安装进行控制, 比如:
./configure --prefix=/usr
上面的意思是将该软件安装在 /usr 下面
执行文件就会安装在 /usr/bin (而不是默认的 /usr/local/bin)
资源文件就会安装在 /usr/share (而不是默认的/usr/local/share)
同时一些软件的配置文件你可以通过指定 --sys-config= 参数进行设定
还有诸如:--with、--enable、--without、--disable 等等参数对编译加以控制, 你可以通过 ./configure --help 察看详细的说明帮助
make
这一步是用来编译的, 它从Makefile中读取指令, 然后编译
这一步就是编译, 大多数的源代码包都经过这一步进行编译
当然有些perl或python编写的软件需要调用perl或python来进行编译
如果 在 make 过程中出现 error, 你就要记下错误代码(注意不仅仅是最后一行), 然后你可以向开发者提交 bugreport(一般在 INSTALL 里有提交地址), 或者你的系统少了一些依赖库等, 这些需要自己仔细研究错误代码。
加参数 -j 用于优化多核、多线程的编译过程
make test / make check
顾名思义, 这一步就是对上一步 make 的检查了, 要确保 make 是没有错误的, 也就是这一步的 test、check要全部是 OK 的, error为 0
sudo make install / make install
这一步是用来安装的, 它也从Makefile中读取指令,安装到指定的位置
这条命令来进行安装,一般需要你有 root 权限(因为要向系统写入文件), 所以前面用了 sudo 。
在进行源代码编译, 或者执行命令无法确认所执行的命令是否成功执行的情况下, 我们都会使用 echo $? 来进行测试。
如果返回值是0, 就是执行成功; 如果是返回值是0以外的值, 就是失败。 此方法适用于./configure make make install等命令
> # echo $?
0
源码包安装的方式遵循的最基本原则:
configure(配置) make(编译) make install(安装)哪个环节错误, 需要将文件删除后重新配置、编译、安装
每一个步骤都要使用 echo $? 测试, 以确保准确无误。
卸载软件
两种方式:
在安装的目录直接删除
rm -rf 安装的目录
在解压安装目录中执行(少数软件支持: 如:pcre)
make uninstall
安装编译工具gcc
yum install gcc
yum install gcc-c++
重新编译需要清理上次编译的信息
make clean
实例: 安装apache软件
1 下载一个源码包
下载地址: http://httpd.apache.org/download.cgi#apache24
下载源码包一定要去官方站点去下载, 不要在网上随便下载, 那样很不安全。因为你下载到的源码包很有可能是被人修改过的。
[root@localhost src]# cd /usr/local/src/
[root@localhost src]# wget http://apache.etoak.com/httpd/httpd-2.2.24.tar.bz2
2 解压源码包
[root@localhost src]# tar -jxvf httpd-2.2.24.tar.bz2
3 配置相关的选项, 并生成Makefile
[root@localhost src]# cd httpd-2.2.24
[root@localhost httpd-2.2.24]# ./configure --help |less
使用 ./configure --help 命令查看可以使用的选项。一般常用的有 --prefix=PREFIX 这个选项的意思是定义软件包安装到哪里。
[root@localhost httpd-2.2.24]# ./configure --prefix=/usr/local/apache2
不幸的是, 安装一开始就报错了, 因为没有gcc编译器, 需要先安装一下。
[root@localhost httpd-2.2.24]# yum install -y gcc
由于gcc依赖的包很多, 所以安装时间会长一些。安装完后, 再继续上面的步骤。
[root@localhost httpd-2.2.24]# ./configure --prefix=/usr/local/apache2
验证这一步是否成功的命令是:
[root@localhost httpd-2.2.24]# echo $?
0
返回值如果是 "0" 则执行成功, 否则就是没有成功。此时就成功生成 Makefile 了。如果有makefile, 就直接make, 然后make install
[root@localhost httpd-2.2.24]# ls -l Makefile
-rw-r--r-- 1 root root 8954 5月 13 12:02 Makefile
4 进行编译
[root@localhost httpd-2.2.24]# make
-bash: make: command not found
又发生错误了, 提示 "make" 命令没有发现, 解决办法是安装make工具。
[root@localhost httpd-2.2.24]# yum install -y make
继续make
[root@localhost httpd-2.2.24]# make
编译的时候,就会出现类似这么多乱七八糟的信息, 编译的时间比较长, CPU使用率会很高, 这是因为CPU高速计算, 编译完后, 再使用 echo $? 验证一下是否正常成功。
[root@localhost httpd-2.2.24]# echo $?
0
如果是0的话, 就可以执行最后一步了。
5 安装
[root@localhost httpd-2.2.24]# make install
当然你也可以使用 echo $? 看看有没有正确安装, 执行完这一步, 则会在 "/usr/local/apache2" 目录下增加了很多目录。
[root@localhost httpd-2.2.24]# ls /usr/local/apache2/
bin cgi-bin error icons lib man modules
build conf htdocs include logs manual
启动Apache服务
shell># /usr/local/apache2/bin/apachectl start/stop/restart
注意:apachectl(字母"l")
到此, apache源码的安装就完成了, 其实在日常的源码安装工作中, 并不是谁都像这样顺利完成安装的, 遇到错误不能完成安装的情况是很多的。
通常都是因为缺少某一个库文件导致的。这就需要你仔细琢磨报错信息或者查看当前目录下的 "config.log" 去得到相关的信息。另外, 如果自己不能解决那就去网上google一下吧, 通常你会得到想要的答案。
安装apache2.4.2出现的问题
apache2.4下载地址: http://mirrors.shuosc.org/apache//httpd/httpd-2.4.29.tar.gz
#./configure --prefix=/usr/local/apache2检查编辑环境时出现:
checking for APR... no
configure: error: APR not found . Please read the documentation
Apache2.4
必须安装APR、APR-Util、PCRE,gcc-c++等包,文档URL地址http://httpd.apache.org/docs/2.4/install.html
解决办法:
1.下载所需软件包:
wget http://archive.apache.org/dist/apr/apr-1.4.5.tar.gz
wget http://archive.apache.org/dist/apr/apr-util-1.3.12.tar.gz
wget http://jaist.dl.sourceforge.net/project/pcre/pcre/8.37/pcre-8.37.zip
2.编译安装:
yum remove apr-util-devel apr apr-util-mysql apr-docs apr-devel apr-util apr-util-docs
具体步骤如下:
a:解决apr not found问题
[root@xt test]# tar -zxf apr-1.4.5.tar.gz
[root@xt test]# cd apr-1.4.5
[root@xt apr-1.4.5]# ./configure --prefix=/usr/local/apr
[root@xt apr-1.4.5]# make && make install
b:解决APR-util not found问题
[root@xt test]# tar -zxf apr-util-1.3.12.tar.gz
[root@xt test]# cd apr-util-1.3.12
[root@xt apr-util-1.3.12]# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr/bin/apr-1-config # 注意apr-1-config(数字1)
[root@xt apr-util-1.3.12]# make && make install
c:解决pcre问题
[root@xt test]#unzip -o pcre-8.37.zip # -o 以压缩文件内拥有最新更改时间的文件为准, 将压缩文件的更改时间设成和该文件相同。
[root@xt test]#cd pcre-8.37
[root@xt pcre-8.10]#./configure --prefix=/usr/local/pcre
报错如下, 说需要c++编辑器
configure: error: You need a C++ compiler for C++ support.
执行yum install gcc gcc-c++安装编辑器
[root@xt pcre-8.10]#yum install gcc gcc-c++
[root@xt pcre-8.10]#./configure --prefix=/usr/local/pcre
[root@xt pcre-8.10]#make && make install
4.最后编译Apache时加上:
./configure --prefix=/usr/local/apache2 \
--with-apr=/usr/local/apr \
--with-apr-util=/usr/local/apr-util/ \
--with-pcre=/usr/local/pcre
成功编译完成~
如何查看80端口是否被占用
netstat -tulnp | grep 80
杀死线程
kill 17071
注意:
Apache主进程以root用户身份运行, 而子进程则以较低权限的apache用户身份运行。子进程数量由配置决定。
实例: 安装memcache
1.安装libevent(Memcache用到了libevent这个库用于Socket的处理, 所以还需要安装libevent)
下载地址: http://libevent.org/
tar zxvf libevent-2.0.21-stable.tar.gz
cd libevent-2.0.21-stable
./configure --prefix=/usr/local/libevent
make && make install
# 建立libevent-2.0.so.5到/usr/lib的软连接, 这样memcached运行的时候才能找到libevent库
cd /usr/lib
ln -s /usr/local/libevent/lib/libevent-2.0.so.5 libevent-2.0.so.5 (具体版本根据你安装的版本不同)
2.安装memcached
下载地址: http://memcached.org/downloads
tar zxvf memcached-1.4.20.tar.gz
cd memcached-1.4.20
./configure --prefix=/usr/local/memcached-1.4.20 --with-libevent=/usr/local/libevent
make
make install
3.启动memcached
cd /usr/local/
ln -s memcached-1.4.20 memcached
/usr/local/memcached/bin/memcached -d -p 11211 -u root -c 1024 -m 1024 -l 192.168.112.128
4. 安装PHP支持memcache扩展
cd /root/soft
tar -zxvf memcache-3.0.6.tgz
cd memcache-3.0.6
/usr/local/php/bin/phpize
./configure --enable-memcache --with-php-config=/usr/local/php/bin/php-config --with-zlib-dir
make && make install
成功之后会生成PHP支持的扩展模块
ls /usr/local/php-5.4.17/lib/php/extensions/no-debug-non-zts-20100525/
php.ini添加扩展
vim /usr/local/php/etc/php.ini
[memcache]
extension=memcache.so
相关推荐
- 0722-6.2.0-如何在RedHat7.2使用rpm安装CDH(无CM)
-
文档编写目的在前面的文档中,介绍了在有CM和无CM两种情况下使用rpm方式安装CDH5.10.0,本文档将介绍如何在无CM的情况下使用rpm方式安装CDH6.2.0,与之前安装C5进行对比。环境介绍:...
- ARM64 平台基于 openEuler + iSula 环境部署 Kubernetes
-
为什么要在arm64平台上部署Kubernetes,而且还是鲲鹏920的架构。说来话长。。。此处省略5000字。介绍下系统信息;o架构:鲲鹏920(Kunpeng920)oOS:ope...
- 生产环境starrocks 3.1存算一体集群部署
-
集群规划FE:节点主要负责元数据管理、客户端连接管理、查询计划和查询调度。>3节点。BE:节点负责数据存储和SQL执行。>3节点。CN:无存储功能能的BE。环境准备CPU检查JDK...
- 在CentOS上添加swap虚拟内存并设置优先级
-
现如今很多云服务器都会自己配置好虚拟内存,当然也有很多没有配置虚拟内存的,虚拟内存可以让我们的低配服务器使用更多的内存,可以减少很多硬件成本,比如我们运行很多服务的时候,内存常常会满,当配置了虚拟内存...
- 国产深度(deepin)操作系统优化指南
-
1.升级内核随着deepin版本的更新,会自动升级系统内核,但是我们依旧可以通过命令行手动升级内核,以获取更好的性能和更多的硬件支持。具体操作:-添加PPAs使用以下命令添加PPAs:```...
- postgresql-15.4 多节点主从(读写分离)
-
1、下载软件[root@TX-CN-PostgreSQL01-252software]#wgethttps://ftp.postgresql.org/pub/source/v15.4/postg...
- Docker 容器 Java 服务内存与 GC 优化实施方案
-
一、设置Docker容器内存限制(生产环境建议)1.查看宿主机可用内存bashfree-h#示例输出(假设宿主机剩余16GB可用内存)#Mem:64G...
- 虚拟内存设置、解决linux内存不够问题
-
虚拟内存设置(解决linux内存不够情况)背景介绍 Memory指机器物理内存,读写速度低于CPU一个量级,但是高于磁盘不止一个量级。所以,程序和数据如果在内存的话,会有非常快的读写速度。但是,内存...
- Elasticsearch性能调优(5):服务器配置选择
-
在选择elasticsearch服务器时,要尽可能地选择与当前业务量相匹配的服务器。如果服务器配置太低,则意味着需要更多的节点来满足需求,一个集群的节点太多时会增加集群管理的成本。如果服务器配置太高,...
- Es如何落地
-
一、配置准备节点类型CPU内存硬盘网络机器数操作系统data节点16C64G2000G本地SSD所有es同一可用区3(ecs)Centos7master节点2C8G200G云SSD所有es同一可用区...
- 针对Linux内存管理知识学习总结
-
现在的服务器大部分都是运行在Linux上面的,所以,作为一个程序员有必要简单地了解一下系统是如何运行的。对于内存部分需要知道:地址映射内存管理的方式缺页异常先来看一些基本的知识,在进程看来,内存分为内...
- MySQL进阶之性能优化
-
概述MySQL的性能优化,包括了服务器硬件优化、操作系统的优化、MySQL数据库配置优化、数据库表设计的优化、SQL语句优化等5个方面的优化。在进行优化之前,需要先掌握性能分析的思路和方法,找出问题,...
- Linux Cgroups(Control Groups)原理
-
LinuxCgroups(ControlGroups)是内核提供的资源分配、限制和监控机制,通过层级化进程分组实现资源的精细化控制。以下从核心原理、操作示例和版本演进三方面详细分析:一、核心原理与...
- linux 常用性能优化参数及理解
-
1.优化内核相关参数配置文件/etc/sysctl.conf配置方法直接将参数添加进文件每条一行.sysctl-a可以查看默认配置sysctl-p执行并检测是否有错误例如设置错了参数:[roo...
- 如何在 Linux 中使用 Sysctl 命令?
-
sysctl是一个用于配置和查询Linux内核参数的命令行工具。它通过与/proc/sys虚拟文件系统交互,允许用户在运行时动态修改内核参数。这些参数控制着系统的各种行为,包括网络设置、文件...
你 发表评论:
欢迎- 一周热门
- 最近发表
- 标签列表
-
- linux 查询端口号 (58)
- docker映射容器目录到宿主机 (66)
- 杀端口 (60)
- yum更换阿里源 (62)
- internet explorer 增强的安全配置已启用 (65)
- linux自动挂载 (56)
- 禁用selinux (55)
- sysv-rc-conf (69)
- ubuntu防火墙状态查看 (64)
- windows server 2022激活密钥 (56)
- 无法与服务器建立安全连接是什么意思 (74)
- 443/80端口被占用怎么解决 (56)
- ping无法访问目标主机怎么解决 (58)
- fdatasync (59)
- 405 not allowed (56)
- 免备案虚拟主机zxhost (55)
- linux根据pid查看进程 (60)
- dhcp工具 (62)
- mysql 1045 (57)
- 宝塔远程工具 (56)
- ssh服务器拒绝了密码 请再试一次 (56)
- ubuntu卸载docker (56)
- linux查看nginx状态 (63)
- tomcat 乱码 (76)
- 2008r2激活序列号 (65)