我如何静态构建 apache httpd?

我如何静态构建 apache httpd?

我需要构建一个能够在多个 Linux 操作系统(RH、SUSE 等)下运行的 apache httpd 服务器

主要问题是 httpd 使用共享库:

ldd httpd/bin/httpd
    linux-vdso.so.1 =>  (0x00007fff955fe000)
    libexpat.so.1 => /lib64/libexpat.so.1 (0x00007fec3df54000)
    librt.so.1 => /lib64/librt.so.1 (0x00007fec3dd4c000)
    libcrypt.so.1 => /lib64/libcrypt.so.1 (0x00007fec3db14000)
    libpthread.so.0 => /lib64/libpthread.so.0 (0x00007fec3d8f7000)
    libc.so.6 => /lib64/libc.so.6 (0x00007fec3d564000)
    /lib64/ld-linux-x86-64.so.2 (0x00007fec3e183000)
    libfreebl3.so => /lib64/libfreebl3.so (0x00007fec3d301000)
    libdl.so.2 => /lib64/libdl.so.2 (0x00007fec3d0fd000)

在其中一台服务器上,由于旧的 glibc 包,这导致 httpd 失败:

ldd httpd 
./httpd: /lib64/libc.so.6: version `GLIBC_2.10' not found (required by ./httpd)
./httpd: /lib64/libc.so.6: version `GLIBC_2.9' not found (required by ./httpd)
    libexpat.so.1 => /usr/lib64/libexpat.so.1 (0x00002b1e6b55d000)
    librt.so.1 => /lib64/librt.so.1 (0x00002b1e6b680000)
    libcrypt.so.1 => /lib64/libcrypt.so.1 (0x00002b1e6b789000)
    libpthread.so.0 => /lib64/libpthread.so.0 (0x00002b1e6b8c3000)
    libc.so.6 => /lib64/libc.so.6 (0x00002b1e6b9dc000)
    /lib64/ld-linux-x86-64.so.2 (0x00002b1e6b441000)

不幸的是,更新系统上的 glibc 不是一个选项。

有没有使用静态库编译 apache httpd 的正确方法?

答案1

构建 httpd 的静态版本需要使用旧的配置标志“--disable-shared”和“./configure”。 http://www.gossamer-threads.com/lists/apache/users/360330

答案2

我需要构建一个能够在多个 Linux 操作系统(RH、SUSE 等)下运行的 apache httpd 服务器

不,你不需要。你有一个问题,你正试图通过静态链接来解决。静态链接是上个世纪的一个糟糕的解决方案,不应该再使用了。请尝试找到解决实际问题的其他方法。

相关内容