零基础开始的网工之路第十四天------Linux程序管理

article/2025/8/12 19:45:20

目录

一、Linux程序与进程

1、程序,进程,线程的概念

2、程序和进程的区别

3、进程和线程的区别

二、Linux进程基础(生命周期)

1、进程生命周期

2、父子进程的关系

三、程序管理

1、常见的软件包类型

四、Linux操作系统启动流程详解

1、概述

2、启动流程核心阶段

1. 电源与固件阶段

2. 引导加载程序(Bootloader)

3. 内核初始化

4. systemd 初始化进程

5. 用户登录阶段

3、故障排查与调试技巧

1. 常见启动问题

五、systemd管理机制

1、运行级别

运行级别与target对应关系

2、systemctl命令的使用

3、服务启动报错排查


一、Linux程序与进程

1、程序,进程,线程的概念

  • 程序:是一组指令及参数的集合,按照既定的逻辑控制计算机运行用来完成特定任务,是静态的;

  • 进程:是运行着的程序,是操作系统执行的基本单位,是程序运行的过程, 是动态的,是有生命周期及运行状态的。是操作系统分配内存、CPU时间片等资源的基本单位。

  • 线程:是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位。

2、程序和进程的区别

  • 程序是静态的,它只是一组指令的集合,不具有任何的运行意义。而进程是程序运行的动态过程;

  • 进程和程序并不是一一对应的关系,相同的程序运行在不同的数据集上就是不同的进程;

  • 进程还具有并发性和交往性,而程序却是封闭的。

3、进程和线程的区别

  • 一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发拥有多个线程,而一个线程同时只能被一个进程所拥有;

  • 线程不能单独执行,但是每一个线程都有程序的入口、执行序列以及程序出口,它必须组成进程才能被执行。

二、Linux进程基础(生命周期)

1、进程生命周期

  • 父进程复制自己的地址空间(fork)创建一个新的(子)进程结构。每个新进程分配一个唯一的进程 ID(PID),PID和父进程ID(PPID)是子进程环境的元素,任何进程都可以创建子进程。

  • 所有进程都是第一个系统进程的后代:在centos6中,第一个系统进程是init,而在centos7中,第一个系统进程是systemd。

例:

[root@bogon ~]# pstree
systemd─┬─ModemManager───2*[{ModemManager}] #systemed为父进程├─NetworkManager───2*[{NetworkManager}]├─VGAuthService├─accounts-daemon───2*[{accounts-daemon}]├─alsactl├─atd├─auditd─┬─sedispatch│        └─2*[{auditd}]├─avahi-daemon───avahi-daemon├─bluetoothd├─colord───2*[{colord}]├─crond├─cupsd├─dbus-daemon───{dbus-daemon}├─dnsmasq───dnsmasq├─firewalld───{firewalld}├─gdm─┬─gdm-session-wor─┬─gdm-wayland-ses─┬─gnome-session-b─┬─g+│     │                 │                 │                 ├─g+│     │                 │                 │                 ├─g+│     │                 │                 │                 ├─g+│     │                 │                 │                 ├─g+│     │                 │                 │                 ├─g+│     │                 │                 │                 ├─g+│     │                 │                 │                 ├─g+│     │                 │                 │                 ├─g+│     │                 │                 │                 ├─g+│     │                 │                 │                 ├─g+│     │                 │                 │                 ├─g+│     │                 │                 │                 ├─g+│     │                 │                 │                 ├─g+│     │                 │                 │                 ├─g+│     │                 │                 │                 ├─g+│     │                 │                 │                 ├─g+│     │                 │                 │                 ├─g+│     │                 │                 │                 ├─g+│     │                 │                 │                 ├─g+│     │                 │                 │                 ├─g+│     │                 │                 │                 ├─t+│     │                 │                 │                 ├─t+│     │                 │                 │                 └─3+│     │                 │                 └─2*[{gdm-wayland-ses+│     │                 └─2*[{gdm-session-wor}]│     └─2*[{gdm}]├─geoclue───2*[{geoclue}]├─gnome-keyring-d───3*[{gnome-keyring-d}]├─gsd-printer───2*[{gsd-printer}]├─gssproxy───5*[{gssproxy}]├─ibus-x11───2*[{ibus-x11}]├─irqbalance───{irqbalance}├─ksmtuned───sleep├─lsmd├─mcelog├─packagekitd───2*[{packagekitd}]├─polkitd───7*[{polkitd}]├─pulseaudio───2*[{pulseaudio}]├─rpcbind├─rsyslogd───2*[{rsyslogd}]├─rtkit-daemon───2*[{rtkit-daemon}]├─smartd├─sshd───sshd───sshd─┬─bash─┬─pstree│                    │      └─systemctl───less│                    └─sftp-server├─sssd_kcm├─systemd─┬─(sd-pam)│         ├─at-spi-bus-laun─┬─dbus-daemon───{dbus-daemon}│         │                 └─3*[{at-spi-bus-laun}]│         ├─at-spi2-registr───2*[{at-spi2-registr}]│         ├─dbus-daemon───{dbus-daemon}│         ├─dconf-service───2*[{dconf-service}]│         ├─evolution-addre─┬─evolution-addre───5*[{evolution-a+│         │                 └─4*[{evolution-addre}]│         ├─evolution-calen─┬─evolution-calen───8*[{evolution-c+│         │                 └─4*[{evolution-calen}]│         ├─evolution-sourc───3*[{evolution-sourc}]│         ├─gnome-shell-cal───5*[{gnome-shell-cal}]│         ├─gnome-terminal-─┬─bash─┬─tcpdump│         │                 │      └─vim│         │                 └─3*[{gnome-terminal-}]│         ├─goa-daemon───3*[{goa-daemon}]│         ├─goa-identity-se───3*[{goa-identity-se}]│         ├─gvfs-afc-volume───3*[{gvfs-afc-volume}]│         ├─gvfs-goa-volume───2*[{gvfs-goa-volume}]│         ├─gvfs-gphoto2-vo───2*[{gvfs-gphoto2-vo}]│         ├─gvfs-mtp-volume───2*[{gvfs-mtp-volume}]│         ├─gvfs-udisks2-vo───3*[{gvfs-udisks2-vo}]│         ├─gvfsd───2*[{gvfsd}]│         ├─gvfsd-fuse───5*[{gvfsd-fuse}]│         ├─ibus-portal───2*[{ibus-portal}]│         ├─tracker-store───4*[{tracker-store}]│         └─xdg-permission-───2*[{xdg-permission-}]├─systemd-journal├─systemd-logind├─systemd-machine├─systemd-udevd├─tuned───3*[{tuned}]├─udisksd───4*[{udisksd}]├─upowerd───2*[{upowerd}]├─2*[vmtoolsd───3*[{vmtoolsd}]]├─vmware-vmblock-───2*[{vmware-vmblock-}]└─wpa_supplicant

2、父子进程的关系

  • 子进程由父进程产生,在linux系统中,使用系统调用fork创建进程。fork复制的内容包括父进程的数据和堆栈段以及父进程的进程环境子进程继承父进程的安全性身份、过去和当前的文件描述符、端口和资源特权、环境变量,以及程序代码。

  • 运行过程:子进程运行时父进程休眠。当子进程完成时发出(exit)信号请求,在退出时,子进程已经关闭或丢弃了其资源环境后,剩余释放不掉的资源称之为僵尸进程。父进程在子进程退出时收到信号而被唤醒,清理剩余的结构,然后继续执行其自己的程序代码。

三、程序管理

1、常见的软件包类型

1.rpm包::.rpm为后缀,红帽系列操作系统(RedHat,CentOS,OpenSUSE)主要的软件包封装格式,已经做好默认设置,只有红帽系统能用

查看

[root@bogon ~]# rpm -qa | wc -l
1485

安装

rpm -ivh

卸载

rpm -e

更新

rpm -u

2.deb包:.deb为后缀,debian系列操作系统(debian,Ubuntu,kali)主要的软件包封装格式,只有debian系统能运用

3.二进制包,能够直接被计算机安装

4.编译安装,由源代码转化成二进制进行安装

2.安装方法

(1)单独从网上找安装包下载

(2)自动安装,从源内下载安装

注:前提是源内有相关的软件包

rpm

yum

[root@bogon ~]# yum install -y httpd
上次元数据过期检查:1 day, 1:14:33 前,执行于 2025年05月27日 星期二 02时24分36秒。
依赖关系解决。
========================================================================软件包            架构   版本                          仓库       大小
========================================================================
安装:httpd             x86_64 2.4.37-65.module+el8.10.0+1938+3b7755d4.3appstream 1.4 M
安装依赖关系:apr               x86_64 1.6.3-12.el8                  appstream 128 kapr-util          x86_64 1.6.1-9.el8                   appstream 105 khttpd-filesystem  noarch 2.4.37-65.module+el8.10.0+1938+3b7755d4.3appstream  44 khttpd-tools       x86_64 2.4.37-65.module+el8.10.0+1938+3b7755d4.3appstream 111 kmod_http2         x86_64 1.15.7-10.module+el8.10.0+1938+3b7755d4.3appstream 155 krocky-logos-httpd noarch 86.3-1.el8                    baseos     24 k
安装弱的依赖:apr-util-bdb      x86_64 1.6.1-9.el8                   appstream  24 kapr-util-openssl  x86_64 1.6.1-9.el8                   appstream  26 k
启用模块流:httpd                    2.4                                          
​
事务概要
========================================================================
安装  9 软件包
​
总下载:2.0 M
安装大小:5.4 M
下载软件包:
(1/9): apr-util-bdb-1.6.1-9.el8.x86_64. 104 kB/s |  24 kB     00:00    
(2/9): apr-util-openssl-1.6.1-9.el8.x86 173 kB/s |  26 kB     00:00    
(3/9): apr-util-1.6.1-9.el8.x86_64.rpm  263 kB/s | 105 kB     00:00    
(4/9): apr-1.6.3-12.el8.x86_64.rpm      318 kB/s | 128 kB     00:00    
(5/9): httpd-filesystem-2.4.37-65.modul 311 kB/s |  44 kB     00:00    
(6/9): httpd-tools-2.4.37-65.module+el8 772 kB/s | 111 kB     00:00    
(7/9): rocky-logos-httpd-86.3-1.el8.noa 379 kB/s |  24 kB     00:00    
(8/9): mod_http2-1.15.7-10.module+el8.1 1.3 MB/s | 155 kB     00:00    
(9/9): httpd-2.4.37-65.module+el8.10.0+ 3.1 MB/s | 1.4 MB     00:00    
------------------------------------------------------------------------
总计                                    722 kB/s | 2.0 MB     00:02     
运行事务检查
事务检查成功。
运行事务测试
事务测试成功。
运行事务准备中  :                                                         1/1 安装    : apr-1.6.3-12.el8.x86_64                                 1/9 运行脚本: apr-1.6.3-12.el8.x86_64                                 1/9 安装    : apr-util-bdb-1.6.1-9.el8.x86_64                         2/9 安装    : apr-util-openssl-1.6.1-9.el8.x86_64                     3/9 安装    : apr-util-1.6.1-9.el8.x86_64                             4/9 运行脚本: apr-util-1.6.1-9.el8.x86_64                             4/9 安装    : httpd-tools-2.4.37-65.module+el8.10.0+1938+3b7755d4.3   5/9 安装    : rocky-logos-httpd-86.3-1.el8.noarch                     6/9 运行脚本: httpd-filesystem-2.4.37-65.module+el8.10.0+1938+3b775   7/9 安装    : httpd-filesystem-2.4.37-65.module+el8.10.0+1938+3b775   7/9 安装    : mod_http2-1.15.7-10.module+el8.10.0+1938+3b7755d4.3.x   8/9 安装    : httpd-2.4.37-65.module+el8.10.0+1938+3b7755d4.3.x86_6   9/9 运行脚本: httpd-2.4.37-65.module+el8.10.0+1938+3b7755d4.3.x86_6   9/9 验证    : apr-1.6.3-12.el8.x86_64                                 1/9 验证    : apr-util-1.6.1-9.el8.x86_64                             2/9 验证    : apr-util-bdb-1.6.1-9.el8.x86_64                         3/9 验证    : apr-util-openssl-1.6.1-9.el8.x86_64                     4/9 验证    : httpd-2.4.37-65.module+el8.10.0+1938+3b7755d4.3.x86_6   5/9 验证    : httpd-filesystem-2.4.37-65.module+el8.10.0+1938+3b775   6/9 验证    : httpd-tools-2.4.37-65.module+el8.10.0+1938+3b7755d4.3   7/9 验证    : mod_http2-1.15.7-10.module+el8.10.0+1938+3b7755d4.3.x   8/9 验证    : rocky-logos-httpd-86.3-1.el8.noarch                     9/9 
​
已安装:apr-1.6.3-12.el8.x86_64                                               apr-util-1.6.1-9.el8.x86_64                                           apr-util-bdb-1.6.1-9.el8.x86_64                                       apr-util-openssl-1.6.1-9.el8.x86_64                                   httpd-2.4.37-65.module+el8.10.0+1938+3b7755d4.3.x86_64                httpd-filesystem-2.4.37-65.module+el8.10.0+1938+3b7755d4.3.noarch     httpd-tools-2.4.37-65.module+el8.10.0+1938+3b7755d4.3.x86_64          mod_http2-1.15.7-10.module+el8.10.0+1938+3b7755d4.3.x86_64            rocky-logos-httpd-86.3-1.el8.noarch                                   
​
完毕!

rpm包的命名方法

zip-0-11.el7.x86_64.rpm
​
软件名.版本号.安装平台.安装架构平台的位数(32位,x86或者64位,x86_64).rpm

yum源类型

1.本地yum源

利用本地存在的软件包路径

file://localPath(绝对路径)【路径下要包含“repodata(包含rpm包的元数据)”目录】

ount: /mnt: WARNING: device write-protected, mounted read-only.
[root@localhost ~]# cd /mnt/
[root@localhost mnt]# ls
AppStream  BaseOS  EFI  images  isolinux  LICENSE  media.repo
[root@localhost mnt]# cd AppStream/
[root@localhost AppStream]# ls
Packages  repodata
[root@localhost AppStream]# cd Packages
[root@localhost Packages]# ls
3  b  d  f  h  j  l  n  p  r  t  v  x  z
a  c  e  g  i  k  m  o  q  s  u  w  y
[root@localhost Packages]# pwd
/mnt/AppStream/Packages
[root@localhost Packages]# cd ..
[root@localhost AppStream]# pwd
/mnt/AppStream
[root@localhost AppStream]# cd /etc/yum.repos.d/
[root@localhost yum.repos.d]# ls
epel-modular.repo          Rocky-HighAvailability.repo
epel.repo                  Rocky-Media.repo
epel-testing-modular.repo  Rocky-NFV.repo
epel-testing.repo          Rocky-Plus.repo
Rocky-AppStream.repo       Rocky-PowerTools.repo
Rocky-BaseOS.repo          Rocky-ResilientStorage.repo
Rocky-Debuginfo.repo       Rocky-RT.repo
Rocky-Devel.repo           Rocky-Sources.repo
Rocky-Extras.repo
[root@localhost yum.repos.d]# mkdir backup
[root@localhost yum.repos.d]# ls
backup                     Rocky-Extras.repo
epel-modular.repo          Rocky-HighAvailability.repo
epel.repo                  Rocky-Media.repo
epel-testing-modular.repo  Rocky-NFV.repo
epel-testing.repo          Rocky-Plus.repo
Rocky-AppStream.repo       Rocky-PowerTools.repo
Rocky-BaseOS.repo          Rocky-ResilientStorage.repo
Rocky-Debuginfo.repo       Rocky-RT.repo
Rocky-Devel.repo           Rocky-Sources.repo
[root@localhost yum.repos.d]# vim local.repo
[local]
name=local
baseurl=file:///mnt/Appstream
enabled=1
gpgcheck=0

2.网络yum源

利用网络存储的软件包路径

http://域名/Path #不常用
​
https://域名/Path
​
ftp://域名/Path  #不常用

rpm包的常用选项

-e 删除安装包

-v 显示安装过程

rpm -e httpd

-q 查看包是否安装

[root@bogon home]# rpm -q httpd
未安装软件包 httpd 
[root@bogon home]# rpm -qa #查看已安装的所有包
[root@bogon home]# rpm -qf /usr/bin/ls #查看命令由哪个软件包安装完成
coreutils-8.30-15.el8.x86_64

当然还有办法看未安装的软件包

rpm -qpi httpd- #查看未安装的软件包开发信息
rpm -qpl httpd- #查看未安装软件包的安装路径及生成文件

deb

dpkg apt

3.二进制

只需要运行bin文件

jdk-6u14-linux-x64.bin
​
./jdk-6u14-linux-x64.bin
​
根据提示进行操作即可

4.编译安装步骤

需要依赖gcc和make环境
​
配置:cd 源码包的解压路径;./configure --prefix=安装路径(/usr/local/nginx)
​
编译:make
​
安装:make install

首先需要从网上下载安装包,这里我们首先去github上下载nginx-1.28.0.tar.gz,然后再将压缩包放进windTerm的root中,开始操作

[root@bogon ~]# mv nginx-1.28.0.tar.gz /home/ #移动到home目录中
[root@bogon ~]# cd /home/
[root@bogon home]# ls
nginx-1.28.0.tar.gz  shanshan
[root@bogon home]# tar xf nginx-1.28.0.tar.gz  -C /usr/local/
[root@bogon home]# cd /usr/local/nginx-1.28.0/
[root@bogon nginx-1.28.0]# ls
auto        CODE_OF_CONDUCT.md  contrib          LICENSE    SECURITY.md
CHANGES     conf                CONTRIBUTING.md  man        src
CHANGES.ru  configure           html             README.md
[root@bogon nginx-1.28.0]# ./configure --prefix=/usr/local/nginx #配置解压路径
checking for OS+ Linux 5.14.0-503.14.1.el9_5.x86_64 x86_64
checking for C compiler ... found+ using GNU C compiler+ gcc version: 11.5.0 20240719 (Red Hat 11.5.0-2) (GCC) 
checking for gcc -pipe switch ... found
checking for -Wl,-E switch ... found
checking for gcc builtin atomic operations ... found
checking for C99 variadic macros ... found
checking for gcc variadic macros ... found
checking for gcc builtin 64 bit byteswap ... found
checking for unistd.h ... found
checking for inttypes.h ... found
checking for limits.h ... found
checking for sys/filio.h ... not found
checking for sys/param.h ... found
checking for sys/mount.h ... found
checking for sys/statvfs.h ... found
checking for crypt.h ... found
checking for Linux specific features
checking for epoll ... found
checking for EPOLLRDHUP ... found
checking for EPOLLEXCLUSIVE ... found
checking for eventfd() ... found
checking for O_PATH ... found
checking for sendfile() ... found
checking for sendfile64() ... found
checking for sys/prctl.h ... found
checking for prctl(PR_SET_DUMPABLE) ... found
checking for prctl(PR_SET_KEEPCAPS) ... found
checking for capabilities ... found
checking for crypt_r() ... found
checking for sys/vfs.h ... found
checking for BPF sockhash ... found
checking for SO_COOKIE ... found
checking for UDP_SEGMENT ... found
checking for nobody group ... found
checking for poll() ... found
checking for /dev/poll ... not found
checking for kqueue ... not found
checking for crypt() ... not found
checking for crypt() in libcrypt ... found
checking for F_READAHEAD ... not found
checking for posix_fadvise() ... found
checking for O_DIRECT ... found
checking for F_NOCACHE ... not found
checking for directio() ... not found
checking for statfs() ... found
checking for statvfs() ... found
checking for dlopen() ... found
checking for sched_yield() ... found
checking for sched_setaffinity() ... found
checking for SO_SETFIB ... not found
checking for SO_REUSEPORT ... found
checking for SO_ACCEPTFILTER ... not found
checking for SO_BINDANY ... not found
checking for IP_TRANSPARENT ... found
checking for IP_BINDANY ... not found
checking for IP_BIND_ADDRESS_NO_PORT ... found
checking for IP_RECVDSTADDR ... not found
checking for IP_SENDSRCADDR ... not found
checking for IP_PKTINFO ... found
checking for IPV6_RECVPKTINFO ... found
checking for IP_MTU_DISCOVER ... found
checking for IPV6_MTU_DISCOVER ... found
checking for IP_DONTFRAG ... not found
checking for IPV6_DONTFRAG ... found
checking for TCP_DEFER_ACCEPT ... found
checking for TCP_KEEPIDLE ... found
checking for TCP_FASTOPEN ... found
checking for TCP_INFO ... found
checking for accept4() ... found
checking for int size ... 4 bytes
checking for long size ... 8 bytes
checking for long long size ... 8 bytes
checking for void * size ... 8 bytes
checking for uint32_t ... found
checking for uint64_t ... found
checking for sig_atomic_t ... found
checking for sig_atomic_t size ... 4 bytes
checking for socklen_t ... found
checking for in_addr_t ... found
checking for in_port_t ... found
checking for rlim_t ... found
checking for uintptr_t ... uintptr_t found
checking for system byte ordering ... little endian
checking for size_t size ... 8 bytes
checking for off_t size ... 8 bytes
checking for time_t size ... 8 bytes
checking for AF_INET6 ... found
checking for setproctitle() ... not found
checking for pread() ... found
checking for pwrite() ... found
checking for pwritev() ... found
checking for strerrordesc_np() ... found
checking for localtime_r() ... found
checking for clock_gettime(CLOCK_MONOTONIC) ... found
checking for posix_memalign() ... found
checking for memalign() ... found
checking for mmap(MAP_ANON|MAP_SHARED) ... found
checking for mmap("/dev/zero", MAP_SHARED) ... found
checking for System V shared memory ... found
checking for POSIX semaphores ... found
checking for struct msghdr.msg_control ... found
checking for ioctl(FIONBIO) ... found
checking for ioctl(FIONREAD) ... found
checking for struct tm.tm_gmtoff ... found
checking for struct dirent.d_namlen ... not found
checking for struct dirent.d_type ... found
checking for sysconf(_SC_NPROCESSORS_ONLN) ... found
checking for sysconf(_SC_LEVEL1_DCACHE_LINESIZE) ... found
checking for openat(), fstatat() ... found
checking for getaddrinfo() ... found
checking for PCRE2 library ... not found
checking for PCRE library ... not found
checking for PCRE library in /usr/local/ ... not found
checking for PCRE library in /usr/include/pcre/ ... not found
checking for PCRE library in /usr/pkg/ ... not found
checking for PCRE library in /opt/local/ ... not found
checking for PCRE library in /opt/homebrew/ ... not found
​
./configure: error: the HTTP rewrite module requires the PCRE library.
You can either disable the module by using --without-http_rewrite_module
option, or install the PCRE library into the system, or build the PCRE library
statically from the source with nginx by using --with-pcre=<path> option.

这里可以看到解压路径配置失败,因为缺少了一个叫PCRE的库,需要安装一下

[root@bogon nginx-1.28.0]# yum install -y pcre  #已经安装过的话,尝试后面加一下 -utils或-devel
上次元数据过期检查:2:03:55 前,执行于 2025年05月28日 星期三 13时07分52秒。
软件包 pcre-8.44-4.el9.x86_64 已安装。
依赖关系解决。
无需任何处理。
完毕!
[root@bogon nginx-1.28.0]# yum install -y pcre-utils
上次元数据过期检查:2:05:09 前,执行于 2025年05月28日 星期三 13时07分52秒。
未找到匹配的参数: pcre-utils
错误:没有任何匹配: pcre-utils
[root@bogon nginx-1.28.0]# yum install -y pcre-devel #缺的就是这个库
上次元数据过期检查:2:05:56 前,执行于 2025年05月28日 星期三 13时07分52秒。
依赖关系解决。
========================================================================软件包           架构         版本               仓库             大小
========================================================================
安装:pcre-devel       x86_64       8.44-4.el9         appstream       469 k
安装依赖关系:pcre-cpp         x86_64       8.44-4.el9         appstream        25 kpcre-utf16       x86_64       8.44-4.el9         appstream       183 kpcre-utf32       x86_64       8.44-4.el9         appstream       173 k
​
事务概要
========================================================================
安装  4 软件包
​
总下载:850 k
安装大小:2.6 M
下载软件包:
(1/4): pcre-utf32-8.44-4.el9.x86_64.rpm 378 kB/s | 173 kB     00:00    
(2/4): pcre-utf16-8.44-4.el9.x86_64.rpm 334 kB/s | 183 kB     00:00    
(3/4): pcre-cpp-8.44-4.el9.x86_64.rpm   233 kB/s |  25 kB     00:00    
(4/4): pcre-devel-8.44-4.el9.x86_64.rpm 721 kB/s | 469 kB     00:00    
------------------------------------------------------------------------
总计                                    429 kB/s | 850 kB     00:01     
运行事务检查
事务检查成功。
运行事务测试
事务测试成功。
运行事务准备中  :                                                         1/1 安装    : pcre-cpp-8.44-4.el9.x86_64                              1/4 安装    : pcre-utf16-8.44-4.el9.x86_64                            2/4 安装    : pcre-utf32-8.44-4.el9.x86_64                            3/4 安装    : pcre-devel-8.44-4.el9.x86_64                            4/4 运行脚本: pcre-devel-8.44-4.el9.x86_64                            4/4 验证    : pcre-utf32-8.44-4.el9.x86_64                            1/4 验证    : pcre-utf16-8.44-4.el9.x86_64                            2/4 验证    : pcre-devel-8.44-4.el9.x86_64                            3/4 验证    : pcre-cpp-8.44-4.el9.x86_64                              4/4 
​
已安装:pcre-cpp-8.44-4.el9.x86_64         pcre-devel-8.44-4.el9.x86_64      pcre-utf16-8.44-4.el9.x86_64       pcre-utf32-8.44-4.el9.x86_64      
​
完毕!
[root@bogon nginx-1.28.0]# ./configure --prefix=/usr/local/nginx
checking for OS+ Linux 5.14.0-503.14.1.el9_5.x86_64 x86_64
checking for C compiler ... found+ using GNU C compiler+ gcc version: 11.5.0 20240719 (Red Hat 11.5.0-2) (GCC) 
checking for gcc -pipe switch ... found
checking for -Wl,-E switch ... found
checking for gcc builtin atomic operations ... found
checking for C99 variadic macros ... found
checking for gcc variadic macros ... found
checking for gcc builtin 64 bit byteswap ... found
checking for unistd.h ... found
checking for inttypes.h ... found
checking for limits.h ... found
checking for sys/filio.h ... not found
checking for sys/param.h ... found
checking for sys/mount.h ... found
checking for sys/statvfs.h ... found
checking for crypt.h ... found
checking for Linux specific features
checking for epoll ... found
checking for EPOLLRDHUP ... found
checking for EPOLLEXCLUSIVE ... found
checking for eventfd() ... found
checking for O_PATH ... found
checking for sendfile() ... found
checking for sendfile64() ... found
checking for sys/prctl.h ... found
checking for prctl(PR_SET_DUMPABLE) ... found
checking for prctl(PR_SET_KEEPCAPS) ... found
checking for capabilities ... found
checking for crypt_r() ... found
checking for sys/vfs.h ... found
checking for BPF sockhash ... found
checking for SO_COOKIE ... found
checking for UDP_SEGMENT ... found
checking for nobody group ... found
checking for poll() ... found
checking for /dev/poll ... not found
checking for kqueue ... not found
checking for crypt() ... not found
checking for crypt() in libcrypt ... found
checking for F_READAHEAD ... not found
checking for posix_fadvise() ... found
checking for O_DIRECT ... found
checking for F_NOCACHE ... not found
checking for directio() ... not found
checking for statfs() ... found
checking for statvfs() ... found
checking for dlopen() ... found
checking for sched_yield() ... found
checking for sched_setaffinity() ... found
checking for SO_SETFIB ... not found
checking for SO_REUSEPORT ... found
checking for SO_ACCEPTFILTER ... not found
checking for SO_BINDANY ... not found
checking for IP_TRANSPARENT ... found
checking for IP_BINDANY ... not found
checking for IP_BIND_ADDRESS_NO_PORT ... found
checking for IP_RECVDSTADDR ... not found
checking for IP_SENDSRCADDR ... not found
checking for IP_PKTINFO ... found
checking for IPV6_RECVPKTINFO ... found
checking for IP_MTU_DISCOVER ... found
checking for IPV6_MTU_DISCOVER ... found
checking for IP_DONTFRAG ... not found
checking for IPV6_DONTFRAG ... found
checking for TCP_DEFER_ACCEPT ... found
checking for TCP_KEEPIDLE ... found
checking for TCP_FASTOPEN ... found
checking for TCP_INFO ... found
checking for accept4() ... found
checking for int size ... 4 bytes
checking for long size ... 8 bytes
checking for long long size ... 8 bytes
checking for void * size ... 8 bytes
checking for uint32_t ... found
checking for uint64_t ... found
checking for sig_atomic_t ... found
checking for sig_atomic_t size ... 4 bytes
checking for socklen_t ... found
checking for in_addr_t ... found
checking for in_port_t ... found
checking for rlim_t ... found
checking for uintptr_t ... uintptr_t found
checking for system byte ordering ... little endian
checking for size_t size ... 8 bytes
checking for off_t size ... 8 bytes
checking for time_t size ... 8 bytes
checking for AF_INET6 ... found
checking for setproctitle() ... not found
checking for pread() ... found
checking for pwrite() ... found
checking for pwritev() ... found
checking for strerrordesc_np() ... found
checking for localtime_r() ... found
checking for clock_gettime(CLOCK_MONOTONIC) ... found
checking for posix_memalign() ... found
checking for memalign() ... found
checking for mmap(MAP_ANON|MAP_SHARED) ... found
checking for mmap("/dev/zero", MAP_SHARED) ... found
checking for System V shared memory ... found
checking for POSIX semaphores ... found
checking for struct msghdr.msg_control ... found
checking for ioctl(FIONBIO) ... found
checking for ioctl(FIONREAD) ... found
checking for struct tm.tm_gmtoff ... found
checking for struct dirent.d_namlen ... not found
checking for struct dirent.d_type ... found
checking for sysconf(_SC_NPROCESSORS_ONLN) ... found
checking for sysconf(_SC_LEVEL1_DCACHE_LINESIZE) ... found
checking for openat(), fstatat() ... found
checking for getaddrinfo() ... found
checking for PCRE2 library ... not found
checking for PCRE library ... found
checking for PCRE JIT support ... found
checking for zlib library ... found
creating objs/Makefile
​
Configuration summary+ using system PCRE library+ OpenSSL library is not used+ using system zlib library
​nginx path prefix: "/usr/local/nginx"nginx binary file: "/usr/local/nginx/sbin/nginx"nginx modules path: "/usr/local/nginx/modules"nginx configuration prefix: "/usr/local/nginx/conf"nginx configuration file: "/usr/local/nginx/conf/nginx.conf"nginx pid file: "/usr/local/nginx/logs/nginx.pid"nginx error log file: "/usr/local/nginx/logs/error.log"nginx http access log file: "/usr/local/nginx/logs/access.log"nginx http client request body temporary files: "client_body_temp"nginx http proxy temporary files: "proxy_temp"nginx http fastcgi temporary files: "fastcgi_temp"nginx http uwsgi temporary files: "uwsgi_temp"nginx http scgi temporary files: "scgi_temp"
​

解压完成

[root@bogon nginx-1.28.0]# vim Makefile
[root@bogon nginx-1.28.0]# make #开始源代码包编译
make -f objs/Makefile
make[1]: 进入目录“/usr/local/nginx-1.28.0”
cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g  -I src/core -I src/event -I src/event/modules -I src/event/quic -I src/os/unix -I objs \-o objs/src/core/nginx.o \src/core/nginx.c
cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g  -I src/core -I src/event -I src/event/modules -I src/event/quic -I src/os/unix -I objs \-o objs/src/core/ngx_log.o \src/core/ngx_log.c
cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g  -I src/core -I src/event -I src/event/modules -I src/event/quic -I src/os/unix -I objs \-o objs/src/core/ngx_palloc.o \src/core/ngx_palloc.c
cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g  -I src/core -I src/event -I src/event/modules -I src/event/quic -I src/os/unix -I objs \-o objs/src/core/ngx_array.o \src/core/ngx_array.c
cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g  -I src/core -I src/event -I src/event/modules -I src/event/quic -I src/os/unix -I objs \-o objs/src/core/ngx_list.o \src/core/ngx_list.c
cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g  -I src/core -I src/event -I src/event/modules -I src/event/quic -I src/os/unix -I objs \-o objs/src/core/ngx_hash.o \src/core/ngx_hash.c
cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g  -I src/core -I src/event -I src/event/modules -I src/event/quic -I src/os/unix -I objs \-o objs/src/core/ngx_buf.o \src/core/ngx_buf.c
cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g  -I src/core -I src/event -I src/event/modules -I src/event/quic -I src/os/unix -I objs \-o objs/src/core/ngx_queue.o \src/core/ngx_queue.c
cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g  -I src/core -I src/event -I src/event/modules -I src/event/quic -I src/os/unix -I objs \-o objs/src/core/ngx_output_chain.o \src/core/ngx_output_chain.c
cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g  -I src/core -I src/event -I src/event/modules -I src/event/quic -I src/os/unix -I objs \-o objs/src/core/ngx_string.o \src/core/ngx_string.c
cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g  -I src/core -I src/event -I src/event/modules -I src/event/quic -I src/os/unix -I objs \-o objs/src/core/ngx_parse.o \src/core/ngx_parse.c
cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g  -I src/core -I src/event -I src/event/modules -I src/event/quic -I src/os/unix -I objs \-o objs/src/core/ngx_parse_time.o \src/core/ngx_parse_time.c
cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g  -I src/core -I src/event -I src/event/modules -I src/event/quic -I src/os/unix -I objs \-o objs/src/core/ngx_inet.o \src/core/ngx_inet.c
cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g  -I src/core -I src/event -I src/event/modules -I src/event/quic -I src/os/unix -I objs \-o objs/src/core/ngx_file.o \src/core/ngx_file.c
cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g  -I src/core -I src/event -I src/event/modules -I src/event/quic -I src/os/unix -I objs \-o objs/src/core/ngx_crc32.o \src/core/ngx_crc32.c
cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g  -I src/core -I src/event -I src/event/modules -I src/event/quic -I src/os/unix -I objs \-o objs/src/core/ngx_murmurhash.o \src/core/ngx_murmurhash.c
cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g  -I src/core -I src/event -I src/event/modules -I src/event/quic -I src/os/unix -I objs \-o objs/src/core/ngx_md5.o \src/core/ngx_md5.c
cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g  -I src/core -I src/event -I src/event/modules -I src/event/quic -I src/os/unix -I objs \-o objs/src/core/ngx_sha1.o \src/core/ngx_sha1.c
cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g  -I src/core -I src/event -I src/event/modules -I src/event/quic -I src/os/unix -I objs \-o objs/src/core/ngx_rbtree.o \src/core/ngx_rbtree.c
cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g  -I src/core -I src/event -I src/event/modules -I src/event/quic -I src/os/unix -I objs \-o objs/src/core/ngx_radix_tree.o \src/core/ngx_radix_tree.c
cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g  -I src/core -I src/event -I src/event/modules -I src/event/quic -I src/os/unix -I objs \-o objs/src/core/ngx_slab.o \src/core/ngx_slab.c
cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g  -I src/core -I src/event -I src/event/modules -I src/event/quic -I src/os/unix -I objs \-o objs/src/core/ngx_times.o \src/core/ngx_times.c
cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g  -I src/core -I src/event -I src/event/modules -I src/event/quic -I src/os/unix -I objs \-o objs/src/core/ngx_shmtx.o \src/core/ngx_shmtx.c
cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g  -I src/core -I src/event -I src/event/modules -I src/event/quic -I src/os/unix -I objs \-o objs/src/core/ngx_connection.o \src/core/ngx_connection.c
cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g  -I src/core -I src/event -I src/event/modules -I src/event/quic -I src/os/unix -I objs \-o objs/src/core/ngx_cycle.o \src/core/ngx_cycle.c
cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g  -I src/core -I src/event -I src/event/modules -I src/event/quic -I src/os/unix -I objs \-o objs/src/core/ngx_spinlock.o \src/core/ngx_spinlock.c
cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g  -I src/core -I src/event -I src/event/modules -I src/event/quic -I src/os/unix -I objs \-o objs/src/core/ngx_rwlock.o \src/core/ngx_rwlock.c
cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g  -I src/core -I src/event -I src/event/modules -I src/event/quic -I src/os/unix -I objs \-o objs/src/core/ngx_cpuinfo.o \src/core/ngx_cpuinfo.c
cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g  -I src/core -I src/event -I src/event/modules -I src/event/quic -I src/os/unix -I objs \-o objs/src/core/ngx_conf_file.o \src/core/ngx_conf_file.c
cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g  -I src/core -I src/event -I src/event/modules -I src/event/quic -I src/os/unix -I objs \-o objs/src/core/ngx_module.o \src/core/ngx_module.c
cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g  -I src/core -I src/event -I src/event/modules -I src/event/quic -I src/os/unix -I objs \-o objs/src/core/ngx_resolver.o \src/core/ngx_resolver.c
cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g  -I src/core -I src/event -I src/event/modules -I src/event/quic -I src/os/unix -I objs \-o objs/src/core/ngx_open_file_cache.o \src/core/ngx_open_file_cache.c
cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g  -I src/core -I src/event -I src/event/modules -I src/event/quic -I src/os/unix -I objs \-o objs/src/core/ngx_crypt.o \src/core/ngx_crypt.c
cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g  -I src/core -I src/event -I src/event/modules -I src/event/quic -I src/os/unix -I objs \-o objs/src/core/ngx_proxy_protocol.o \src/core/ngx_proxy_protocol.c
cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g  -I src/core -I src/event -I src/event/modules -I src/event/quic -I src/os/unix -I objs \-o objs/src/core/ngx_syslog.o \src/core/ngx_syslog.c
cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g  -I src/core -I src/event -I src/event/modules -I src/event/quic -I src/os/unix -I objs \-o objs/src/event/ngx_event.o \src/event/ngx_event.c
cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g  -I src/core -I src/event -I src/event/modules -I src/event/quic -I src/os/unix -I objs \-o objs/src/event/ngx_event_timer.o \src/event/ngx_event_timer.c
cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g  -I src/core -I src/event -I src/event/modules -I src/event/quic -I src/os/unix -I objs \-o objs/src/event/ngx_event_posted.o \src/event/ngx_event_posted.c
cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g  -I src/core -I src/event -I src/event/modules -I src/event/quic -I src/os/unix -I objs \-o objs/src/event/ngx_event_accept.o \src/event/ngx_event_accept.c
cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g  -I src/core -I src/event -I src/event/modules -I src/event/quic -I src/os/unix -I objs \-o objs/src/event/ngx_event_udp.o \src/event/ngx_event_udp.c
cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g  -I src/core -I src/event -I src/event/modules -I src/event/quic -I src/os/unix -I objs \-o objs/src/event/ngx_event_connect.o \src/event/ngx_event_connect.c
cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g  -I src/core -I src/event -I src/event/modules -I src/event/quic -I src/os/unix -I objs \-o objs/src/event/ngx_event_pipe.o \src/event/ngx_event_pipe.c
cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g  -I src/core -I src/event -I src/event/modules -I src/event/quic -I src/os/unix -I objs \-o objs/src/os/unix/ngx_time.o \src/os/unix/ngx_time.c
cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g  -I src/core -I src/event -I src/event/modules -I src/event/quic -I src/os/unix -I objs \-o objs/src/os/unix/ngx_errno.o \src/os/unix/ngx_errno.c
cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g  -I src/core -I src/event -I src/event/modules -I src/event/quic -I src/os/unix -I objs \-o objs/src/os/unix/ngx_alloc.o \src/os/unix/ngx_alloc.c
cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g  -I src/core -I src/event -I src/event/modules -I src/event/quic -I src/os/unix -I objs \-o objs/src/os/unix/ngx_files.o \src/os/unix/ngx_files.c
cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g  -I src/core -I src/event -I src/event/modules -I src/event/quic -I src/os/unix -I objs \-o objs/src/os/unix/ngx_socket.o \src/os/unix/ngx_socket.c
cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g  -I src/core -I src/event -I src/event/modules -I src/event/quic -I src/os/unix -I objs \-o objs/src/os/unix/ngx_recv.o \src/os/unix/ngx_recv.c
cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g  -I src/core -I src/event -I src/event/modules -I src/event/quic -I src/os/unix -I objs \-o objs/src/os/unix/ngx_readv_chain.o \src/os/unix/ngx_readv_chain.c
cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g  -I src/core -I src/event -I src/event/modules -I src/event/quic -I src/os/unix -I objs \-o objs/src/os/unix/ngx_udp_recv.o \src/os/unix/ngx_udp_recv.c
cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g  -I src/core -I src/event -I src/event/modules -I src/event/quic -I src/os/unix -I objs \-o objs/src/os/unix/ngx_send.o \src/os/unix/ngx_send.c
cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g  -I src/core -I src/event -I src/event/modules -I src/event/quic -I src/os/unix -I objs \-o objs/src/os/unix/ngx_writev_chain.o \src/os/unix/ngx_writev_chain.c
cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g  -I src/core -I src/event -I src/event/modules -I src/event/quic -I src/os/unix -I objs \-o objs/src/os/unix/ngx_udp_send.o \src/os/unix/ngx_udp_send.c
cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g  -I src/core -I src/event -I src/event/modules -I src/event/quic -I src/os/unix -I objs \-o objs/src/os/unix/ngx_udp_sendmsg_chain.o \src/os/unix/ngx_udp_sendmsg_chain.c
cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g  -I src/core -I src/event -I src/event/modules -I src/event/quic -I src/os/unix -I objs \-o objs/src/os/unix/ngx_channel.o \src/os/unix/ngx_channel.c
cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g  -I src/core -I src/event -I src/event/modules -I src/event/quic -I src/os/unix -I objs \-o objs/src/os/unix/ngx_shmem.o \src/os/unix/ngx_shmem.c
cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g  -I src/core -I src/event -I src/event/modules -I src/event/quic -I src/os/unix -I objs \-o objs/src/os/unix/ngx_process.o \src/os/unix/ngx_process.c
cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g  -I src/core -I src/event -I src/event/modules -I src/event/quic -I src/os/unix -I objs \-o objs/src/os/unix/ngx_daemon.o \src/os/unix/ngx_daemon.c
cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g  -I src/core -I src/event -I src/event/modules -I src/event/quic -I src/os/unix -I objs \-o objs/src/os/unix/ngx_setaffinity.o \src/os/unix/ngx_setaffinity.c
cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g  -I src/core -I src/event -I src/event/modules -I src/event/quic -I src/os/unix -I objs \-o objs/src/os/unix/ngx_setproctitle.o \src/os/unix/ngx_setproctitle.c
cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g  -I src/core -I src/event -I src/event/modules -I src/event/quic -I src/os/unix -I objs \-o objs/src/os/unix/ngx_posix_init.o \src/os/unix/ngx_posix_init.c
cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g  -I src/core -I src/event -I src/event/modules -I src/event/quic -I src/os/unix -I objs \-o objs/src/os/unix/ngx_user.o \src/os/unix/ngx_user.c
cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g  -I src/core -I src/event -I src/event/modules -I src/event/quic -I src/os/unix -I objs \-o objs/src/os/unix/ngx_dlopen.o \src/os/unix/ngx_dlopen.c
cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g  -I src/core -I src/event -I src/event/modules -I src/event/quic -I src/os/unix -I objs \-o objs/src/os/unix/ngx_process_cycle.o \src/os/unix/ngx_process_cycle.c
cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g  -I src/core -I src/event -I src/event/modules -I src/event/quic -I src/os/unix -I objs \-o objs/src/os/unix/ngx_linux_init.o \src/os/unix/ngx_linux_init.c
cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g  -I src/core -I src/event -I src/event/modules -I src/event/quic -I src/os/unix -I objs \-o objs/src/event/modules/ngx_epoll_module.o \src/event/modules/ngx_epoll_module.c
cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g  -I src/core -I src/event -I src/event/modules -I src/event/quic -I src/os/unix -I objs \-o objs/src/os/unix/ngx_linux_sendfile_chain.o \src/os/unix/ngx_linux_sendfile_chain.c
cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g  -I src/core -I src/event -I src/event/modules -I src/event/quic -I src/os/unix -I objs \-o objs/src/core/ngx_bpf.o \src/core/ngx_bpf.c
cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g  -I src/core -I src/event -I src/event/modules -I src/event/quic -I src/os/unix -I objs \-o objs/src/core/ngx_regex.o \src/core/ngx_regex.c
cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g  -I src/core -I src/event -I src/event/modules -I src/event/quic -I src/os/unix -I objs -I src/http -I src/http/modules \-o objs/src/http/ngx_http.o \src/http/ngx_http.c
cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g  -I src/core -I src/event -I src/event/modules -I src/event/quic -I src/os/unix -I objs -I src/http -I src/http/modules \-o objs/src/http/ngx_http_core_module.o \src/http/ngx_http_core_module.c
cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g  -I src/core -I src/event -I src/event/modules -I src/event/quic -I src/os/unix -I objs -I src/http -I src/http/modules \-o objs/src/http/ngx_http_special_response.o \src/http/ngx_http_special_response.c
cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g  -I src/core -I src/event -I src/event/modules -I src/event/quic -I src/os/unix -I objs -I src/http -I src/http/modules \-o objs/src/http/ngx_http_request.o \src/http/ngx_http_request.c
cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g  -I src/core -I src/event -I src/event/modules -I src/event/quic -I src/os/unix -I objs -I src/http -I src/http/modules \-o objs/src/http/ngx_http_parse.o \src/http/ngx_http_parse.c
cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g  -I src/core -I src/event -I src/event/modules -I src/event/quic -I src/os/unix -I objs -I src/http -I src/http/modules \-o objs/src/http/modules/ngx_http_log_module.o \src/http/modules/ngx_http_log_module.c
cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g  -I src/core -I src/event -I src/event/modules -I src/event/quic -I src/os/unix -I objs -I src/http -I src/http/modules \-o objs/src/http/ngx_http_request_body.o \src/http/ngx_http_request_body.c
cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g  -I src/core -I src/event -I src/event/modules -I src/event/quic -I src/os/unix -I objs -I src/http -I src/http/modules \-o objs/src/http/ngx_http_variables.o \src/http/ngx_http_variables.c
cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g  -I src/core -I src/event -I src/event/modules -I src/event/quic -I src/os/unix -I objs -I src/http -I src/http/modules \-o objs/src/http/ngx_http_script.o \src/http/ngx_http_script.c
cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g  -I src/core -I src/event -I src/event/modules -I src/event/quic -I src/os/unix -I objs -I src/http -I src/http/modules \-o objs/src/http/ngx_http_upstream.o \src/http/ngx_http_upstream.c
cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g  -I src/core -I src/event -I src/event/modules -I src/event/quic -I src/os/unix -I objs -I src/http -I src/http/modules \-o objs/src/http/ngx_http_upstream_round_robin.o \src/http/ngx_http_upstream_round_robin.c
cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g  -I src/core -I src/event -I src/event/modules -I src/event/quic -I src/os/unix -I objs -I src/http -I src/http/modules \-o objs/src/http/ngx_http_file_cache.o \src/http/ngx_http_file_cache.c
cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g  -I src/core -I src/event -I src/event/modules -I src/event/quic -I src/os/unix -I objs -I src/http -I src/http/modules \-o objs/src/http/ngx_http_write_filter_module.o \src/http/ngx_http_write_filter_module.c
cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g  -I src/core -I src/event -I src/event/modules -I src/event/quic -I src/os/unix -I objs -I src/http -I src/http/modules \-o objs/src/http/ngx_http_header_filter_module.o \src/http/ngx_http_header_filter_module.c
cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g  -I src/core -I src/event -I src/event/modules -I src/event/quic -I src/os/unix -I objs -I src/http -I src/http/modules \-o objs/src/http/modules/ngx_http_chunked_filter_module.o \src/http/modules/ngx_http_chunked_filter_module.c
cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g  -I src/core -I src/event -I src/event/modules -I src/event/quic -I src/os/unix -I objs -I src/http -I src/http/modules \-o objs/src/http/modules/ngx_http_range_filter_module.o \src/http/modules/ngx_http_range_filter_module.c
cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g  -I src/core -I src/event -I src/event/modules -I src/event/quic -I src/os/unix -I objs -I src/http -I src/http/modules \-o objs/src/http/modules/ngx_http_gzip_filter_module.o \src/http/modules/ngx_http_gzip_filter_module.c
cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g  -I src/core -I src/event -I src/event/modules -I src/event/quic -I src/os/unix -I objs -I src/http -I src/http/modules \-o objs/src/http/ngx_http_postpone_filter_module.o \src/http/ngx_http_postpone_filter_module.c
cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g  -I src/core -I src/event -I src/event/modules -I src/event/quic -I src/os/unix -I objs -I src/http -I src/http/modules \-o objs/src/http/modules/ngx_http_ssi_filter_module.o \src/http/modules/ngx_http_ssi_filter_module.c
cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g  -I src/core -I src/event -I src/event/modules -I src/event/quic -I src/os/unix -I objs -I src/http -I src/http/modules \-o objs/src/http/modules/ngx_http_charset_filter_module.o \src/http/modules/ngx_http_charset_filter_module.c
cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g  -I src/core -I src/event -I src/event/modules -I src/event/quic -I src/os/unix -I objs -I src/http -I src/http/modules \-o objs/src/http/modules/ngx_http_userid_filter_module.o \src/http/modules/ngx_http_userid_filter_module.c
cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g  -I src/core -I src/event -I src/event/modules -I src/event/quic -I src/os/unix -I objs -I src/http -I src/http/modules \-o objs/src/http/modules/ngx_http_headers_filter_module.o \src/http/modules/ngx_http_headers_filter_module.c
cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g  -I src/core -I src/event -I src/event/modules -I src/event/quic -I src/os/unix -I objs -I src/http -I src/http/modules \-o objs/src/http/ngx_http_copy_filter_module.o \src/http/ngx_http_copy_filter_module.c
cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g  -I src/core -I src/event -I src/event/modules -I src/event/quic -I src/os/unix -I objs -I src/http -I src/http/modules \-o objs/src/http/modules/ngx_http_not_modified_filter_module.o \src/http/modules/ngx_http_not_modified_filter_module.c
cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g  -I src/core -I src/event -I src/event/modules -I src/event/quic -I src/os/unix -I objs -I src/http -I src/http/modules \-o objs/src/http/modules/ngx_http_static_module.o \src/http/modules/ngx_http_static_module.c
cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g  -I src/core -I src/event -I src/event/modules -I src/event/quic -I src/os/unix -I objs -I src/http -I src/http/modules \-o objs/src/http/modules/ngx_http_autoindex_module.o \src/http/modules/ngx_http_autoindex_module.c
cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g  -I src/core -I src/event -I src/event/modules -I src/event/quic -I src/os/unix -I objs -I src/http -I src/http/modules \-o objs/src/http/modules/ngx_http_index_module.o \src/http/modules/ngx_http_index_module.c
cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g  -I src/core -I src/event -I src/event/modules -I src/event/quic -I src/os/unix -I objs -I src/http -I src/http/modules \-o objs/src/http/modules/ngx_http_mirror_module.o \src/http/modules/ngx_http_mirror_module.c
cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g  -I src/core -I src/event -I src/event/modules -I src/event/quic -I src/os/unix -I objs -I src/http -I src/http/modules \-o objs/src/http/modules/ngx_http_try_files_module.o \src/http/modules/ngx_http_try_files_module.c
cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g  -I src/core -I src/event -I src/event/modules -I src/event/quic -I src/os/unix -I objs -I src/http -I src/http/modules \-o objs/src/http/modules/ngx_http_auth_basic_module.o \src/http/modules/ngx_http_auth_basic_module.c
cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g  -I src/core -I src/event -I src/event/modules -I src/event/quic -I src/os/unix -I objs -I src/http -I src/http/modules \-o objs/src/http/modules/ngx_http_access_module.o \src/http/modules/ngx_http_access_module.c
cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g  -I src/core -I src/event -I src/event/modules -I src/event/quic -I src/os/unix -I objs -I src/http -I src/http/modules \-o objs/src/http/modules/ngx_http_limit_conn_module.o \src/http/modules/ngx_http_limit_conn_module.c
cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g  -I src/core -I src/event -I src/event/modules -I src/event/quic -I src/os/unix -I objs -I src/http -I src/http/modules \-o objs/src/http/modules/ngx_http_limit_req_module.o \src/http/modules/ngx_http_limit_req_module.c
cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g  -I src/core -I src/event -I src/event/modules -I src/event/quic -I src/os/unix -I objs -I src/http -I src/http/modules \-o objs/src/http/modules/ngx_http_geo_module.o \src/http/modules/ngx_http_geo_module.c
cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g  -I src/core -I src/event -I src/event/modules -I src/event/quic -I src/os/unix -I objs -I src/http -I src/http/modules \-o objs/src/http/modules/ngx_http_map_module.o \src/http/modules/ngx_http_map_module.c
cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g  -I src/core -I src/event -I src/event/modules -I src/event/quic -I src/os/unix -I objs -I src/http -I src/http/modules \-o objs/src/http/modules/ngx_http_split_clients_module.o \src/http/modules/ngx_http_split_clients_module.c
cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g  -I src/core -I src/event -I src/event/modules -I src/event/quic -I src/os/unix -I objs -I src/http -I src/http/modules \-o objs/src/http/modules/ngx_http_referer_module.o \src/http/modules/ngx_http_referer_module.c
cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g  -I src/core -I src/event -I src/event/modules -I src/event/quic -I src/os/unix -I objs -I src/http -I src/http/modules \-o objs/src/http/modules/ngx_http_rewrite_module.o \src/http/modules/ngx_http_rewrite_module.c
cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g  -I src/core -I src/event -I src/event/modules -I src/event/quic -I src/os/unix -I objs -I src/http -I src/http/modules \-o objs/src/http/modules/ngx_http_proxy_module.o \src/http/modules/ngx_http_proxy_module.c
cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g  -I src/core -I src/event -I src/event/modules -I src/event/quic -I src/os/unix -I objs -I src/http -I src/http/modules \-o objs/src/http/modules/ngx_http_fastcgi_module.o \src/http/modules/ngx_http_fastcgi_module.c
cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g  -I src/core -I src/event -I src/event/modules -I src/event/quic -I src/os/unix -I objs -I src/http -I src/http/modules \-o objs/src/http/modules/ngx_http_uwsgi_module.o \src/http/modules/ngx_http_uwsgi_module.c
cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g  -I src/core -I src/event -I src/event/modules -I src/event/quic -I src/os/unix -I objs -I src/http -I src/http/modules \-o objs/src/http/modules/ngx_http_scgi_module.o \src/http/modules/ngx_http_scgi_module.c
cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g  -I src/core -I src/event -I src/event/modules -I src/event/quic -I src/os/unix -I objs -I src/http -I src/http/modules \-o objs/src/http/modules/ngx_http_memcached_module.o \src/http/modules/ngx_http_memcached_module.c
cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g  -I src/core -I src/event -I src/event/modules -I src/event/quic -I src/os/unix -I objs -I src/http -I src/http/modules \-o objs/src/http/modules/ngx_http_empty_gif_module.o \src/http/modules/ngx_http_empty_gif_module.c
cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g  -I src/core -I src/event -I src/event/modules -I src/event/quic -I src/os/unix -I objs -I src/http -I src/http/modules \-o objs/src/http/modules/ngx_http_browser_module.o \src/http/modules/ngx_http_browser_module.c
cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g  -I src/core -I src/event -I src/event/modules -I src/event/quic -I src/os/unix -I objs -I src/http -I src/http/modules \-o objs/src/http/modules/ngx_http_upstream_hash_module.o \src/http/modules/ngx_http_upstream_hash_module.c
cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g  -I src/core -I src/event -I src/event/modules -I src/event/quic -I src/os/unix -I objs -I src/http -I src/http/modules \-o objs/src/http/modules/ngx_http_upstream_ip_hash_module.o \src/http/modules/ngx_http_upstream_ip_hash_module.c
cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g  -I src/core -I src/event -I src/event/modules -I src/event/quic -I src/os/unix -I objs -I src/http -I src/http/modules \-o objs/src/http/modules/ngx_http_upstream_least_conn_module.o \src/http/modules/ngx_http_upstream_least_conn_module.c
cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g  -I src/core -I src/event -I src/event/modules -I src/event/quic -I src/os/unix -I objs -I src/http -I src/http/modules \-o objs/src/http/modules/ngx_http_upstream_random_module.o \src/http/modules/ngx_http_upstream_random_module.c
cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g  -I src/core -I src/event -I src/event/modules -I src/event/quic -I src/os/unix -I objs -I src/http -I src/http/modules \-o objs/src/http/modules/ngx_http_upstream_keepalive_module.o \src/http/modules/ngx_http_upstream_keepalive_module.c
cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g  -I src/core -I src/event -I src/event/modules -I src/event/quic -I src/os/unix -I objs -I src/http -I src/http/modules \-o objs/src/http/modules/ngx_http_upstream_zone_module.o \src/http/modules/ngx_http_upstream_zone_module.c
cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g  -I src/core -I src/event -I src/event/modules -I src/event/quic -I src/os/unix -I objs \-o objs/ngx_modules.o \objs/ngx_modules.c
cc -o objs/nginx \
objs/src/core/nginx.o \
objs/src/core/ngx_log.o \
objs/src/core/ngx_palloc.o \
objs/src/core/ngx_array.o \
objs/src/core/ngx_list.o \
objs/src/core/ngx_hash.o \
objs/src/core/ngx_buf.o \
objs/src/core/ngx_queue.o \
objs/src/core/ngx_output_chain.o \
objs/src/core/ngx_string.o \
objs/src/core/ngx_parse.o \
objs/src/core/ngx_parse_time.o \
objs/src/core/ngx_inet.o \
objs/src/core/ngx_file.o \
objs/src/core/ngx_crc32.o \
objs/src/core/ngx_murmurhash.o \
objs/src/core/ngx_md5.o \
objs/src/core/ngx_sha1.o \
objs/src/core/ngx_rbtree.o \
objs/src/core/ngx_radix_tree.o \
objs/src/core/ngx_slab.o \
objs/src/core/ngx_times.o \
objs/src/core/ngx_shmtx.o \
objs/src/core/ngx_connection.o \
objs/src/core/ngx_cycle.o \
objs/src/core/ngx_spinlock.o \
objs/src/core/ngx_rwlock.o \
objs/src/core/ngx_cpuinfo.o \
objs/src/core/ngx_conf_file.o \
objs/src/core/ngx_module.o \
objs/src/core/ngx_resolver.o \
objs/src/core/ngx_open_file_cache.o \
objs/src/core/ngx_crypt.o \
objs/src/core/ngx_proxy_protocol.o \
objs/src/core/ngx_syslog.o \
objs/src/event/ngx_event.o \
objs/src/event/ngx_event_timer.o \
objs/src/event/ngx_event_posted.o \
objs/src/event/ngx_event_accept.o \
objs/src/event/ngx_event_udp.o \
objs/src/event/ngx_event_connect.o \
objs/src/event/ngx_event_pipe.o \
objs/src/os/unix/ngx_time.o \
objs/src/os/unix/ngx_errno.o \
objs/src/os/unix/ngx_alloc.o \
objs/src/os/unix/ngx_files.o \
objs/src/os/unix/ngx_socket.o \
objs/src/os/unix/ngx_recv.o \
objs/src/os/unix/ngx_readv_chain.o \
objs/src/os/unix/ngx_udp_recv.o \
objs/src/os/unix/ngx_send.o \
objs/src/os/unix/ngx_writev_chain.o \
objs/src/os/unix/ngx_udp_send.o \
objs/src/os/unix/ngx_udp_sendmsg_chain.o \
objs/src/os/unix/ngx_channel.o \
objs/src/os/unix/ngx_shmem.o \
objs/src/os/unix/ngx_process.o \
objs/src/os/unix/ngx_daemon.o \
objs/src/os/unix/ngx_setaffinity.o \
objs/src/os/unix/ngx_setproctitle.o \
objs/src/os/unix/ngx_posix_init.o \
objs/src/os/unix/ngx_user.o \
objs/src/os/unix/ngx_dlopen.o \
objs/src/os/unix/ngx_process_cycle.o \
objs/src/os/unix/ngx_linux_init.o \
objs/src/event/modules/ngx_epoll_module.o \
objs/src/os/unix/ngx_linux_sendfile_chain.o \
objs/src/core/ngx_bpf.o \
objs/src/core/ngx_regex.o \
objs/src/http/ngx_http.o \
objs/src/http/ngx_http_core_module.o \
objs/src/http/ngx_http_special_response.o \
objs/src/http/ngx_http_request.o \
objs/src/http/ngx_http_parse.o \
objs/src/http/modules/ngx_http_log_module.o \
objs/src/http/ngx_http_request_body.o \
objs/src/http/ngx_http_variables.o \
objs/src/http/ngx_http_script.o \
objs/src/http/ngx_http_upstream.o \
objs/src/http/ngx_http_upstream_round_robin.o \
objs/src/http/ngx_http_file_cache.o \
objs/src/http/ngx_http_write_filter_module.o \
objs/src/http/ngx_http_header_filter_module.o \
objs/src/http/modules/ngx_http_chunked_filter_module.o \
objs/src/http/modules/ngx_http_range_filter_module.o \
objs/src/http/modules/ngx_http_gzip_filter_module.o \
objs/src/http/ngx_http_postpone_filter_module.o \
objs/src/http/modules/ngx_http_ssi_filter_module.o \
objs/src/http/modules/ngx_http_charset_filter_module.o \
objs/src/http/modules/ngx_http_userid_filter_module.o \
objs/src/http/modules/ngx_http_headers_filter_module.o \
objs/src/http/ngx_http_copy_filter_module.o \
objs/src/http/modules/ngx_http_not_modified_filter_module.o \
objs/src/http/modules/ngx_http_static_module.o \
objs/src/http/modules/ngx_http_autoindex_module.o \
objs/src/http/modules/ngx_http_index_module.o \
objs/src/http/modules/ngx_http_mirror_module.o \
objs/src/http/modules/ngx_http_try_files_module.o \
objs/src/http/modules/ngx_http_auth_basic_module.o \
objs/src/http/modules/ngx_http_access_module.o \
objs/src/http/modules/ngx_http_limit_conn_module.o \
objs/src/http/modules/ngx_http_limit_req_module.o \
objs/src/http/modules/ngx_http_geo_module.o \
objs/src/http/modules/ngx_http_map_module.o \
objs/src/http/modules/ngx_http_split_clients_module.o \
objs/src/http/modules/ngx_http_referer_module.o \
objs/src/http/modules/ngx_http_rewrite_module.o \
objs/src/http/modules/ngx_http_proxy_module.o \
objs/src/http/modules/ngx_http_fastcgi_module.o \
objs/src/http/modules/ngx_http_uwsgi_module.o \
objs/src/http/modules/ngx_http_scgi_module.o \
objs/src/http/modules/ngx_http_memcached_module.o \
objs/src/http/modules/ngx_http_empty_gif_module.o \
objs/src/http/modules/ngx_http_browser_module.o \
objs/src/http/modules/ngx_http_upstream_hash_module.o \
objs/src/http/modules/ngx_http_upstream_ip_hash_module.o \
objs/src/http/modules/ngx_http_upstream_least_conn_module.o \
objs/src/http/modules/ngx_http_upstream_random_module.o \
objs/src/http/modules/ngx_http_upstream_keepalive_module.o \
objs/src/http/modules/ngx_http_upstream_zone_module.o \
objs/ngx_modules.o \
-lcrypt -lpcre -lz \
-Wl,-E
sed -e "s|%%PREFIX%%|/usr/local/nginx|" \-e "s|%%PID_PATH%%|/usr/local/nginx/logs/nginx.pid|" \-e "s|%%CONF_PATH%%|/usr/local/nginx/conf/nginx.conf|" \-e "s|%%ERROR_LOG_PATH%%|/usr/local/nginx/logs/error.log|" \< man/nginx.8 > objs/nginx.8
make[1]: 离开目录“/usr/local/nginx-1.28.0”
[root@bogon nginx-1.28.0]# make install  #开始安装
make -f objs/Makefile install
make[1]: 进入目录“/usr/local/nginx-1.28.0”
test -d '/usr/local/nginx' || mkdir -p '/usr/local/nginx'
test -d '/usr/local/nginx/sbin' \|| mkdir -p '/usr/local/nginx/sbin'
test ! -f '/usr/local/nginx/sbin/nginx' \|| mv '/usr/local/nginx/sbin/nginx' \'/usr/local/nginx/sbin/nginx.old'
cp objs/nginx '/usr/local/nginx/sbin/nginx'
test -d '/usr/local/nginx/conf' \|| mkdir -p '/usr/local/nginx/conf'
cp conf/koi-win '/usr/local/nginx/conf'
cp conf/koi-utf '/usr/local/nginx/conf'
cp conf/win-utf '/usr/local/nginx/conf'
test -f '/usr/local/nginx/conf/mime.types' \|| cp conf/mime.types '/usr/local/nginx/conf'
cp conf/mime.types '/usr/local/nginx/conf/mime.types.default'
test -f '/usr/local/nginx/conf/fastcgi_params' \|| cp conf/fastcgi_params '/usr/local/nginx/conf'
cp conf/fastcgi_params \'/usr/local/nginx/conf/fastcgi_params.default'
test -f '/usr/local/nginx/conf/fastcgi.conf' \|| cp conf/fastcgi.conf '/usr/local/nginx/conf'
cp conf/fastcgi.conf '/usr/local/nginx/conf/fastcgi.conf.default'
test -f '/usr/local/nginx/conf/uwsgi_params' \|| cp conf/uwsgi_params '/usr/local/nginx/conf'
cp conf/uwsgi_params \'/usr/local/nginx/conf/uwsgi_params.default'
test -f '/usr/local/nginx/conf/scgi_params' \|| cp conf/scgi_params '/usr/local/nginx/conf'
cp conf/scgi_params \'/usr/local/nginx/conf/scgi_params.default'
test -f '/usr/local/nginx/conf/nginx.conf' \|| cp conf/nginx.conf '/usr/local/nginx/conf/nginx.conf'
cp conf/nginx.conf '/usr/local/nginx/conf/nginx.conf.default'
test -d '/usr/local/nginx/logs' \|| mkdir -p '/usr/local/nginx/logs'
test -d '/usr/local/nginx/logs' \|| mkdir -p '/usr/local/nginx/logs'
test -d '/usr/local/nginx/html' \|| cp -R html '/usr/local/nginx'
test -d '/usr/local/nginx/logs' \|| mkdir -p '/usr/local/nginx/logs'
make[1]: 离开目录“/usr/local/nginx-1.28.0”

安装完成

需要注意的是:编译安装完成的软件默认不被systemd管理 ,也就是无法直接使用命令因此要给它设置一个软连接,为他进行路径优化

[root@bogon nginx]# ln -s /usr/local/nginx/sbin/nginx /usr/sbin/nginx

大功告成了

四、Linux操作系统启动流程详解

1、概述

Linux启动流程是从按下电源键到用户登录的完整过程,分为传统BIOS+MBR和现代UEFI+GPT两种模式。主流系统(如CentOS 7+/Ubuntu 18.04+)通常使用 UEFI + GRUB2 + systemd 组合。

2、启动流程核心阶段

1. 电源与固件阶段
  • UEFI/BIOS初始化

    • 硬件自检(POST, Power-On Self-Test)

    • UEFI特点:图形化界面、支持GPT分区、独立于OS的Shell环境

    • 定位启动设备:读取NVRAM中的启动项(efibootmgr命令可管理)

2. 引导加载程序(Bootloader)
  • GRUB2 核心作用

    (内有一个重要的运行级别后面会说)

    • 配置文件路径:/boot/grub2/grub.cfg(由grub2-mkconfig生成)

    • 引导程序分类

    • 关键配置参数:

      [root@bogon ~]# cd /boot/grub2
      [root@bogon grub2]# vim grub.cfg
      set root=(hd0,gpt1)  # 指定/boot所在分区
      linux /vmlinuz-5.4.0 root=/dev/sda2 ro  # 内核路径及挂载参数
      initrd /initramfs-5.4.0.img             # 初始化内存文件系统
3. 内核初始化
  • 内核解压与初始化

    • 加载vmlinuz:压缩的内核镜像

    • initramfs 作用:

      • 包含根文件系统挂载前的驱动(如LVM、RAID)

      • 提供dracut工具集(可通过dmesg | grep initramfs查看日志)

    • 挂载根文件系统(/)为只读模式

4. systemd 初始化进程
  • 首个用户态进程

    • PID=1,替代传统init

    • 核心任务:

      1. 解析/etc/systemd/system/default.target(默认运行级别)

      2. 并行启动服务单元(Unit)

      3. 激活sysinit.target(系统初始化)、basic.target(基础服务)

  • 关键操作命令

    systemctl get-default         # 查看默认target
    systemctl set-default multi-user.target  # 设置默认为命令行模式
    journalctl -b                # 查看本次启动日志

默认运行级别是可以修改的 后面会说

5. 用户登录阶段
  • 终端登录

    • getty 服务生成终端(/etc/systemd/system/getty.target.wants/

    • 调用login验证用户身份

  • 图形化登录

    • Display Manager(如GDM、LightDM)启动X/Wayland会话


3、故障排查与调试技巧

1. 常见启动问题
故障现象可能原因解决方法
GRUB Rescue> 提示符引导分区损坏/配置丢失使用Live CD重建grub
Kernel panic驱动缺失/根文件系统错误检查initramfs是否包含所需驱动
systemd启动卡死服务依赖死锁添加systemd.unit=emergency.target内核参数
文件系统只读fsck未通过或磁盘错误手动运行`fsck /dev/sda1

五、systemd管理机制

init进程是所有进程的父进程,systemd实际上是一种管理init的软件。只能管理rpm安装的

units存储路径
​
/usr/lib/systemd/system
  • 基于unit概念实现,常见的unit类型

单元类型扩展名说明
Service.service描述一个系统服务
Target.target描述一组systemd的单元

例:

root@bogon ~]# cd /usr/lib/systemd/system/
[root@bogon system]# cd
[root@bogon ~]# ls -a
.     视频  音乐             .bash_logout   .config   .ssh
..    图片  桌面             .bash_profile  .cshrc    .tcshrc
公共  文档  anaconda-ks.cfg  .bashrc        .lesshst  .viminfo
模板  下载  .bash_history    .cache         .local

1、运行级别

  • 运行级别与target对应关系
级别说明
0关机
1单用户
2多用户(等同于3)
3多用户
4多用户(等同于3)
5图形多用户
6重启

查看运行级别**

runlevel
​
N|运行级别数字   当前运行级别数字

例:

[root@bogon ~]# runlevel
N 5

N代表null,表示没切换过其它运行级别

切换运行级别**

init  运行级别数字

例:

[root@bogon ~]# init 3
[root@bogon ~]# runlevel
5 3

查看默认运行级别

systemctl get-default
[root@bogon ~]# systemctl get-default 
graphical.target

设置默认运行级别

systemctl set-default  运行级别target

2、systemctl命令的使用

语法结构:

systemctl  服务控制类型   服务名称[.service]

服务控制类型

start:启动

stop:停止

restart:重启(会停止服务)

reload:重载(不停止服务,),加载配置文件,优雅的重启

status:查看状态

Active:active(runing)
Active:inactive(dead)

例:

[root@bogon ~]# systemctl status httpd
○ httpd.service - The Apache HTTP ServerLoaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; p>Active: inactive (dead)Docs: man:httpd.service(8)

enable:开机自启动

is-enabled:查看是否开机自启动

disable:开机不进行自启动

--now 配合enable与disable使用;在进行开机自启或不自启的同时进行打开或关闭指定服务

其它选项

-t
​
指定unit类型
​
Unit Commands
​
list-units
​
列出所有unit,一般与-t结合

例:

root@bogon ~]# systemctl list-units -t serviceUNIT                                   LOAD   ACTIVE SUB     DESCRIPTION                                                >accounts-daemon.service                loaded active running Accounts Serviceatd.service                            loaded active running Deferred execution schedulerauditd.service                         loaded active running Security Auditing Serviceavahi-daemon.service                   loaded active running Avahi mDNS/DNS-SD Stackbluetooth.service                      loaded active running Bluetooth servicechronyd.service                        loaded active running NTP client/servercolord.service                         loaded active running Manage, Install and Generate Color Profilescrond.service                          loaded active running Command Schedulercups.service                           loaded active running CUPS Schedulerdbus-broker.service                    loaded active running D-Bus System Message Busdracut-shutdown.service                loaded active exited  Restore /run/initramfs on shutdownfirewalld.service                      loaded active running firewalld - dynamic firewall daemongdm.service                            loaded active running GNOME Display Managerirqbalance.service                     loaded active running irqbalance daemonkdump.service                          loaded active exited  Crash recovery kernel armingkmod-static-nodes.service              loaded active exited  Create List of Static Device Nodesldconfig.service                       loaded active exited  Rebuild Dynamic Linker Cachelibstoragemgmt.service                 loaded active running libstoragemgmt plug-in server daemonlvm2-monitor.service                   loaded active exited  Monitoring of LVM2 mirrors, snapshots etc. using dmeventd o>mcelog.service                         loaded active running Machine Check Exception Logging DaemonModemManager.service                   loaded active running Modem ManagerNetworkManager-wait-online.service     loaded active exited  Network Manager Wait OnlineNetworkManager.service                 loaded active running Network Managernis-domainname.service                 loaded active exited  Read and set NIS domainname from /etc/sysconfig/networkplymouth-quit-wait.service             loaded active exited  Hold until boot process finishes up

3、服务启动报错排查

脚本错误

###参数报错
Failed to restart crond.service: Unit is not loaded properly: Invalid argument.
​
See system logs and 'systemctl status crond.service' for details.
​
Loaded: error (Reason: Invalid argument)
​
###命令报错
8月 27 11:57:51 localhost.localdomain systemd[12545]: Failed at step EXEC spawning /usr/sbin/httpd1: No such file or directory
-- Subject: Process /usr/sbin/httpd1 could not be executed

配置文件错误

Job for httpd.service failed because the control process exited with error code. See "systemctl status httpd.service" and "journalctl -xe" for details.
​
Active: failed (Result: exit-code)
​
AH00526: Syntax error on line 42 of /etc/httpd/conf/httpd.conf:

未知错误

Active: failed (Result: exit-code)
8月 27 12:03:41 localhost.localdomain useradd[12790]: failed adding user 'apache', exit code: 9
没有具体的错误提示
排查关联服务及配置文件

服务排错命令

journalctl -xe

图形化管理工具

ntsysv  #只能在图形化运行级别使用

http://www.hkcw.cn/article/vZBndMIxSn.shtml

相关文章

大模型应用开发之微调与对齐

一、指令微调Instruction Tuning 1、指令数据 大模型就像一个天赋异禀的学生&#xff0c;在前期预训练阶段通过大量的阅读知识积累拥有了大量的见识&#xff0c;但光有天赋知识却不会交流还不行&#xff0c;得有好的教材和老师教它怎么做题、怎么回答问题&#xff0c;这个“教…

黑熊从俄罗斯跨境游到中国 当地回应 提醒村民注意安全

5月29日,黑龙江省鹤岗市萝北县有渔民在下江作业时,发现一只黑熊横渡黑龙江,从俄罗斯游到了中国境内。这只黑熊上岸后消失在了山林中。视频内容显示,这只黑熊出现在萝北县太平沟乡太平沟村附近,它在黑龙江里游泳的样子显得十分迅捷。看到渔民驾船靠近时,黑熊原地用熊掌拍击…

成立国际调解院有哪些意义 重塑全球治理话语权

国际调解院的成立旨在重塑全球治理话语权。现有国际机制如海牙国际法院和WTO争端解决机制因程序冗长、成本高昂,难以满足发展中国家需求。国际调解院以“调解优先”为原则,提供低成本、高效率的非对抗性解决方案,填补了发展中国家在争端解决中的制度性空白。通过吸纳60个国家…

联合国拟大幅削减预算并裁员 应对财务困境

多家媒体披露的联合国内部文件显示,联合国秘书处计划削减20%预算,并裁员6900人,约占员工总数的20%。负责财政事务的联合国助理秘书长钱德拉穆利拉马纳坦向各部门负责人发出信函,要求执行秘书长安东尼奥古特雷斯提出的计划,在2026年实现常规预算15%至20%的实质性削减,同时…

数据集的标注

最近在了解数据集及数据集标注的相关知识。 通常情况下一些专业大型的数据集标注都是以xml文件作为标注格式&#xff0c;这篇博客以水下数据集URPC2020为例 这是URPC2020数据集中的第一张图片&#xff1a;海胆&#xff08;英文名&#xff1a;echinus&#xff09; 以下是对这张…

集成设备管理(IDM)

集成设备管理 (IDM) 是 CI-700 上的一项功能&#xff0c;可提高系统的稳健性&#xff0c;从而减少设备重新启动的需要。它通过检测系统中没有响应的设备并尝试从问题中恢复来增加 SoC 的正常运行时间来实现这一点。IDM 将识别、记录和报告因不响应而导致超时的设备。当这种情况…

哈佛校长在毕业典礼上嘲讽特朗普 国际学生获支持

5月29日,美国法官暂停了特朗普政府取消哈佛大学招收外国学生资质的政策,为哈佛大学带来了暂时的胜利。同一天,哈佛大学第374届毕业典礼如期举行。哈佛大学校长艾伦加伯在致辞中欢迎了约9000名毕业生,他说:“致2025届的同学们,你们来自街对面、全国各地以及世界各地。”当…

韩国大选民调落后12% 金文洙会输吗 局势仍存变数

韩国大选临近,6月3日注定是个不平凡的日子。目前局势显示,李在明的支持率领先金文洙,但选举结果未必如数据所显示的那样简单。最近,全国各地都在热议李在明和金文洙,李在明以49.2%的支持率领先,金文洙则为36.8%,两人相差12.4个百分点。另一个候选人李俊锡的支持率为10.3…

流浪狗为报恩帮烧烤店老板看店 奇妙缘分引发关注

这世道真是广阔,无奇不有,像个大杂烩一样。刚开始这家烤鸭铺子老板还没搬走的时候,店门口总有一只邋遢的小土狗偷偷地窝在那里。它看起来像是饿了好几万年,眼睛都快冒星星了盯着新出的烤鸭。老板顺手扔了个鸭尾巴过去,没想到这一举动竟然迎来了跟狗子的奇妙“缘分”。没多…

为何说美断供C919航发反成中国机会 国产化或催生军用潜力

美国商务部中止了向中国商飞出售技术和相关产品的部分许可证,导致C-919大飞机搭载的Leap-1C发动机难以继续供应。这一事件在国内互联网上引发了一些人的担忧,他们认为这可能会对C-919窄体干线客机的量产、使用和销售带来严重影响。然而,从另一个角度来看,这也可能是一个机会…

山东一公司多人落入清洗池致5死 事故原因正调查中

5月30日12时30分许,郓城县一废品回收企业发生一起事故。一名员工在废旧塑料清洗池边作业时不慎跌入池中,六名工友相继施救也跌入池中。事故发生后,当地消防部门和120急救人员迅速赶到现场,将七人紧急送往医院抢救。目前,事故已导致五人死亡,两人情况危重。菏泽市和郓城县…

张雨霏在母校游泳被“预备”晃到了 冠军学姐惊喜现身

5月28日,东南大学的许多学生在学校游泳馆偶遇了奥运冠军张雨霏。原来,张雨霏回到母校拍摄毕业照。当时她正在上游泳课,突然与冠军学姐相遇让学生们感到非常惊喜。张雨霏不仅拍摄了毕业照,还亲自下水示范,学生们纷纷表示“‘霏教练’的冠军大师课太值了!”2022年,张雨霏成…

专家:特朗普关税的命运一天就反转 政策博弈加剧市场动荡

5月28日,美国国际贸易法院裁定禁止执行特朗普政府多个关税行政令。彭博社称,这项裁决是特朗普政府任期内遭遇的最大司法挫折之一。特朗普政府在裁决发布几分钟后就提起了上诉。一天后,联邦巡回上诉法院批准了特朗普政府的请求,暂时中止国际贸易法院的裁决。在这两天的迅速反…

Vert.x学习笔记-WorkerContext中的PoolMetrics要怎么用

在 Vert.x 中&#xff0c;WorkerContext 的 PoolMetrics 用于监控 Worker 线程池的性能指标&#xff08;如任务队列长度、活跃线程数、任务执行耗时等&#xff09;&#xff0c;帮助开发者分析线程池负载和性能瓶颈。 一、PoolMetrics 的核心功能 通过 WorkerPool 的 poolMetri…

非遗IP也开始卷“出海”了 探索跨界新可能

在第九届中国成都国际非物质文化遗产节中,“创意生活”国际非遗品牌IP授权交易活动作为三大特色板块之一,通过多场非遗与不同行业的分享交流及专题推介洽谈,探索“非遗+”的多种可能性。5月29日,在“国际非遗品牌IP授权跨界运用对话”活动现场,以“解锁非遗品牌IP授权密码…

AI转型新范式:道可云推出“AI分阶付费模式”,破解企业AI转型高投入困局

近日&#xff0c;150位全球顶尖AI创始人齐聚红杉AI峰会闭门会议&#xff0c;经过6小时深入探讨达成共识&#xff1a;AI的核心价值已从“工具售卖”跃迁至“收益共创”。这一转变标志着全球AI产业进入“成果经济”时代。 三大趋势重构AI商业版图 **1.定价逻辑重构&#xff1a;…

“中国麻辣烫发源地”官宣揭牌 乐山五通桥获殊荣

5月29日晚,四川乐山五通桥区举办了2025年第二届小西湖美食音乐节活动。中国食品工业协会在活动中为“中国麻辣烫发源地”揭牌。经相关佐证及专家论证,中国食品工业协会认为起源于乐山市五通桥区牛华镇的“牛华麻辣烫”是中国麻辣烫的发源地。据五通桥区文化馆原馆长王中其介绍…

MAZANOKE图像优化器本地部署与cpolar随时随地远程使用

文章目录 前言1. 关于MAZANOKE2. Docker部署3. 简单使用MAZANOKE4. 安装cpolar内网穿透5. 配置公网地址6. 配置固定公网地址总结 前言 你的内存空间还剩多少&#xff1f; 在这个全民摄影的时代&#xff0c;手机里的照片越来越多&#xff0c;电脑的硬盘也跟着膨胀起来。每次打…

随笔笔记记录5.10

1.删除一条net的一部分 setLayerPreference node_layer -isVisible 0 setLayerPreference G2 -isVisible 1 editCutWire -only_visible_wires -line {a b c d} selectWire e f g h 11 VSS deleteSelectedFromFPlan 2.删除线和孔的命令可以用 select_obj $aaa editDelete -s…

九旬上海夫妻遭“极度危情” 如厕遇阻二老摔倒

90多岁的汪老伯和妻子顾阿婆在杨浦区松鹤公园经历了一次惊险的事件。当天,二老前往公园游玩散心,顾阿婆突然腹泻,为相互有个照应,他们想使用公园的“第三卫生间”,却发现大门紧锁。无奈之下,顾阿婆只能前往女厕所,不料因女厕扶手不全,匆忙间没站稳不慎跌倒。汪老伯前往…