我需要构建一个能够在多个 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 服务器
不,你不需要。你有一个问题,你正试图通过静态链接来解决。静态链接是上个世纪的一个糟糕的解决方案,不应该再使用了。请尝试找到解决实际问题的其他方法。