我需要build立一个Apache的httpd服务器,将能够在多个Linux操作系统下运行(RH,SUSE等)
主要的问题是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的正确方法?
我需要build立一个Apache的httpd服务器,将能够在多个Linux操作系统下运行(RH,SUSE等)
不,你不知道。 你有一个问题,你想通过静态链接来解决。 静态链接是上个世纪的一个可怕的解决scheme,不应该再做了。 请尝试find解决您的实际问题的不同方式。
构buildhttpd的静态版本需要使用“.disable-shared”和“./configure”的遗留configuration标志。 http://www.gossamer-threads.com/lists/apache/users/360330