nginx的三个基础库:PCRE、OpenSSL、Zlib的安装

验证确保已安装交叉编译工具链,检查工具链路径:

确保aarch64-linux-gnu-gcc、aarch64-linux-gnu-ld等工具在PATH中,且无主机工具链污染:

bash 复制代码
which aarch64-linux-gnu-gcc

如果工具链路径未正确识别,可在Configure后修改Makefile,显式指定链接器:

bash 复制代码
# 在Makefile中找到以下变量并修改
CC= aarch64-linux-gnu-gcc
AR= aarch64-linux-gnu-ar
LD= aarch64-linux-gnu-ld

若安装后面的三个基础库,发现读写执行等权限不足,就使用"sudo chmod 777 -R 文件夹"对整个文件夹及其子文件可读、可写、可执行的权限

bash 复制代码
sudo chmod 777 -R 文件夹名称

1、下载pcre-8.45.tar.gz、openssl-1.1.1w、zlib-1.3.1

1.1 下载pcre-8.45.tar.gz

bash 复制代码
wget http://mirror.dotsrc.org/tinycorelinux/14.x/x86_64/tcz/src/pcre/pcre-8.45.tar.bz2

检查文件大小:

bash 复制代码
ls -lh pcre-8.45.tar.bz2

解压pcre-8.45.tar.bz2:

bash 复制代码
tar -xvf pcre-8.45.tar.bz2

编译:

bash 复制代码
./configure \
--host=aarch64-linux-gnu \
--prefix=/opt/rootfs-arm64/usr \
CC=aarch64-linux-gnu-gcc \
CXX=aarch64-linux-gnu-g++

安装:

bash 复制代码
sudo make -j$(nproc)
sudo make install

安装完成后,检查文件是否写入成功:

bash 复制代码
ls -l /opt/rootfs-arm64/usr/lib/libpcre*.so

1.2 安装openssl-1.1.1w

bash 复制代码
wget https://github.com/openssl/openssl/archive/refs/tags/OpenSSL_1_1_1w.tar.gz -O openssl-1.1.1w.tar.gz

验证文件大小:

bash 复制代码
ls -lh openssl-1.1.1w.tar.gz

确认压缩包内是否含有Configure

bash 复制代码
tar -tzvf openssl-1.1.1w.tar.gz | grep Configure

解压文件:

bash 复制代码
tar -zxvf openssl-1.1.1w.tar.gz

编译前先清理残留文件:

bash 复制代码
make distclean  # 清理所有编译中间文件(比make clean更彻底)
# 或手动删除残留文件
rm -rf crypto/*.o apps/*.o *.so *.a

编译:

bash 复制代码
./Configure linux-aarch64 \
--prefix=/opt/rootfs-arm64/usr \
--cross-compile-prefix=aarch64-linux-gnu- \
no-asm \
shared

安装:

bash 复制代码
sudo make -j$(nproc)
sudo make install_sw

检查检查文件是否存在:

bash 复制代码
ls -l /opt/rootfs-arm64/usr/bin/openssl
bash 复制代码
ls -l /opt/rootfs-arm64/usr/lib/engines-1.1/capi.so

测试运行:

bash 复制代码
cd /opt/rootfs-arm64/usr/bin/
openssl version

将安装路径加入环境变量 PATH 和 LD_LIBRARY_PATH::

bash 复制代码
export PATH=/opt/rootfs-arm64/usr/bin:$PATH
export LD_LIBRARY_PATH=/opt/rootfs-arm64/usr/lib:$LD_LIBRARY_PATH

1.3 下载zlib-1.3.1

bash 复制代码
wget https://zlib.net/fossils/zlib-1.3.1.tar.gz

检查文件大小:

bash 复制代码
ls -lh zlib-1.3.1.tar.gz 

解压文件:

bash 复制代码
tar -zxvf zlib-1.3.1.tar.gz

编译:

bash 复制代码
CC=aarch64-linux-gnu-gcc \
AR=aarch64-linux-gnu-ar \
RANLIB=aarch64-linux-gnu-ranlib \
./configure --prefix=/opt/rootfs-arm64/usr

安装:

bash 复制代码
sudo make -j$(nproc)
sudo make install

验证安装:

bash 复制代码
ls -l /opt/rootfs-arm64/usr/lib/libz.so.1*

配置环境变量

临时生效:

bash 复制代码
export LD_LIBRARY_PATH=/opt/rootfs-arm64/usr/lib:$LD_LIBRARY_PATH
export PATH=/opt/rootfs-arm64/usr/bin:$PATH
echo '/opt/rootfs-arm64/usr/lib' sudo tee /etc/ld.so.conf.d/zlib.conf 

sudo ldconfig

若报错:PATH环境变量未包含/bin和/usr/bin,导致系统找不到sudo命令

临时修复PATH环境变量
bash 复制代码
export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:$PATH

验证:

bash 复制代码
which sudo
永久修复PATH(推荐)

编辑用户级配置文件(如~/.bashrc或~/.profile):

bash 复制代码
nano ~/.bashrc

在文件末尾添加以下行(确保包含基础路径):

bash 复制代码
export PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:$PATH"

保存后生效:

bash 复制代码
source ~/.bashrc

修复PATH和权限后,重新运行:

bash 复制代码
echo '/opt/rootfs-arm64/usr/lib' | sudo tee /etc/ld.so.conf.d/zlib.conf
sudo ldconfig  # 更新库缓存

检查PATH是否包含基础路径:

bash 复制代码
echo $PATH | tr ':' '\n' | grep -E '^/bin|^/usr/bin'

测试sudo命令:

bash 复制代码
sudo -v  # 验证权限(无报错即成功)
相关推荐
砚凝霜4 小时前
【软考信息安全】第二十二章 Web服务器安全分析与增强——Apache与IIS
服务器·前端·安全
Android系统攻城狮4 小时前
Linux Gstreamer深度解析之gst_audio_ring_buffer_delay调用流程与实战(七十二)
linux·运维·服务器·gstreamer音视频·音视频进阶
快乐的韭菜根根5 小时前
ubuntu 安装slurm并配置
linux·运维·ubuntu
数字新视界5 小时前
机房动环监控提升运维效率
大数据·服务器·数据库·动环监控系统·动力与环境监控系统
U-Mail邮件系统5 小时前
自建邮箱服务器有哪些软件?三款主流邮件服务器软件推荐
运维·服务器
倒头就睡的小比特6 小时前
Linux基础指令3
linux·服务器
Smoothcloud润云6 小时前
PyTorch推理服务模型热切换与失败回滚实战:降低版本更新中断
服务器·人工智能·pytorch·python·深度学习·gpu
梦帮科技7 小时前
Kali Linux Scapy 畸形报文构造学——深度解剖非法 TCP Flags 与反常序列号
linux·爬虫·神经网络·算法·数学建模·系统架构·模拟退火算法
半杯咖啡半行码8 小时前
Linux 驱动开发入门:内核模块编程基础
linux·服务器·网络
别动我齐刘海8 小时前
Linux 系统调试学习2
linux·运维·c++·人工智能·学习·机器学习·机器人