当前位置: 首页 > article >正文

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

目录

一、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.lryc.cn/news/2393770.html

相关文章:

  • SIGGRAPH 2025 | 快手可灵团队提出3D感知的电影级文本到视频生成框架CineMaster
  • 历年西安电子科技大学计算机保研上机真题
  • 利用openwrt路由器和随身WIFI搭建CPE
  • 科学智能赋能空间科学研究(2):AI4S 范式下空间科学实验的核心挑战
  • 计算机网络学习(九)——CDN
  • Axure设计案例——科技感渐变线性图
  • 【Opencv+Yolo】Day2_图像处理
  • 嵌入式开发学习(第二阶段 C语言笔记)
  • STUSB4500 PPS(PD3.0)快充SINK模块——应用 解析
  • Android全局网络监控最佳实践(Kotlin实现)
  • 从认识AI开始-----解密门控循环单元(GRU):对LSTM的再优化
  • Docker系列(五):ROS容器化三叉戟 --- 从X11、Wayland到DockerFile实战全解析
  • 【位运算】常见位运算总结
  • Delphi 导入excel
  • 5G RedCap是什么-与标准5G的区别及支持路由器推荐
  • 纯html,js创建一个类似excel的表格
  • 如何使用windows下的vscode连接到本地虚拟机的linux
  • Vue开发系列——零基础HTML引入 Vue.js 实现页面之间传参
  • Ubuntu22.04 重装后,串口无响应
  • 设计模式-发布订阅
  • C#学习26天:内存优化的几种方法
  • 功能测试向量是个什么概念
  • C++之string的模拟实现
  • Python打卡第38天
  • 【网络安全】轻量敏感路径扫描工具
  • K8S查看pod资源占用和物理机器IP对应关系
  • Java Spring 之拦截器HandlerInterceptor详解与实战
  • 开源第三方库发展现状
  • JavaSE核心知识点04工具04-02(IDEA)
  • NodeMediaEdge通道管理