1

我认为非常直截了当。这是可行的吗?

背景:我这样做是因为我需要在 suse enterprise 9 上运行 php-cgi,并且无法获取 LD_PRELOAD 或 LD_LIBRARY_PATH 以使用非系统版本的 glibc。

php-cgi: /lib/tls/libc.so.6: version `GLIBC_2.7' not found

我从这里下载了 2.7

http://rpmfind.net/linux/rpm2html/search.php?query=libc.so.6(GLIBC_2.7 )

更确切地说

ftp://rpmfind.net/linux/sourceforge/r/ro/roblinux/64-32_pkg/core/i686/glibc-2.7-2rt.i686.rpm

并使用 rpm2cpio 解压。

我需要 php-cgi,因为我无法安装 php,并且想尝试使用 JavaBridge 从 tomcat 中运行 php。

4

1 回答 1

1

如何使用自定义 glibc 为 suse 企业 linux 编译 php-cgi 二进制文件?

我认为非常直截了当。

不,一个非常困惑和迂回的问题。

首先,cygwin与您的问题完全无关:它用于在 Windows 上运行 UNIX 程序,这根本不是您要问的。

其次,您的问题似乎是:“如何在具有比构建 php-cgi 的旧 glibc 的系统上运行预构建 php-cgi 二进制文件?”,而不是编译任何东西。

对于这个问题,答案是:你不能(很容易)——UNIX 系统不支持前向二进制兼容性(在新系统上构建,在旧系统上运行)。仅支持向后兼容性(旧的动态链接二进制文件继续在较新的系统上运行)。

您最好的方法是尝试在您的系统上构建 php- cgi (这将消除它对GLIBC_2.7. t 重新执行本身。假设您将 glibc-2.7 解压缩到 eg中,这样做的方法类似于:/tmp/glibc-2.7

/tmp/glibc-2.7/lib/ld-linux.so.2 --library-path \
    /tmp/glibc-2.7/lib:/lib:/usr/lib \
  /path/to/php-cgi <args>

(上面的库路径可能需要一些调整才能让加载器找到所有需要的库。)

更新:

在cygwin中为我的linux盒子编译东西是否实用

可能的,但简单地在 linux 机器本身上编译要痛苦得多(因此实际上并不实用)。除了错误地认为 cygwin 可以解决所有问题之外,您似乎没有任何理由想要这样做。

于 2012-07-08T20:23:13.180 回答