Linux软件编译与安装
Linux软件编译与安装
为什么需要源码编译
- 获取最新版本
- 自定义编译选项
- 优化特定硬件
- 包管理器中没有的软件
编译基础
基本流程
# 1. 下载源码
wget http://example.com/software-1.0.tar.gz
# 2. 解压
tar -xzf software-1.0.tar.gz
cd software-1.0
# 3. 配置
./configure --prefix=/usr/local/software
# 4. 编译
make
# 5. 安装
sudo make install
配置选项
# 查看可用选项
./configure --help
# 指定安装目录
./configure --prefix=/usr/local
# 启用特定功能
./configure --enable-feature1 --disable-feature2
# 指定依赖路径
./configure --with-ssl=/usr/local/openssl
依赖管理
安装编译依赖
# Debian/Ubuntu
sudo apt-get install build-essential
# 安装常见依赖
sudo apt-get install \
libssl-dev \
libcurl4-openssl-dev \
libpcre3-dev \
zlib1g-dev \
libxml2-dev
# CentOS/RHEL
sudo yum groupinstall "Development Tools"
sudo yum install openssl-devel pcre-devel zlib-devel
CMake构建
# 使用CMake的项目
mkdir build
cd build
cmake .. -DCMAKE_INSTALL_PREFIX=/usr/local
make
sudo make install
实践:从源码安装Nginx
#!/bin/bash
# 1. 安装依赖
sudo apt-get update
sudo apt-get install -y build-essential libpcre3 libpcre3-dev \
zlib1g zlib1g-dev libssl-dev libgd-dev
# 2. 下载源码
cd /usr/local/src
wget http://nginx.org/download/nginx-1.24.0.tar.gz
tar -xzf nginx-1.24.0.tar.gz
cd nginx-1.24.0
# 3. 配置
./configure \
--prefix=/etc/nginx \
--sbin-path=/usr/sbin/nginx \
--modules-path=/usr/lib64/nginx/modules \
--conf-path=/etc/nginx/nginx.conf \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--pid-path=/var/run/nginx.pid \
--lock-path=/var/run/nginx.lock \
--with-http_ssl_module \
--with-http_v2_module \
--with-http_gzip_static_module
# 4. 编译
make -j$(nproc)
# 5. 安装
sudo make install
# 6. 创建systemd服务
sudo cat > /etc/systemd/system/nginx.service << 'EOF'
[Unit]
Description=The NGINX HTTP and reverse proxy server
After=network.target
[Service]
Type=forking
PIDFile=/var/run/nginx.pid
ExecStartPre=/usr/sbin/nginx -t
ExecStart=/usr/sbin/nginx
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
[Install]
WantedBy=multi-user.target
EOF
sudo systemctl daemon-reload
sudo systemctl enable nginx
sudo systemctl start nginx
卸载源码安装的软件
# 如果安装时记录了文件列表
cat install_manifest.txt | xargs rm -f
# 手动删除
sudo rm -rf /usr/local/software
总结
源码编译是Linux软件安装的重要方式。掌握编译流程和依赖管理,能够安装各种定制化的软件。