我认为非常直截了当。这可以吗?
背景:我这样做是因为我需要在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。
答案 0 :(得分:0)
如何使用自定义glibc为cysewin中的suse企业linux编译php-cgi二进制文件?
我认为非常直接。
不,非常混淆和迂回的问题。
首先,cygwin没有绝对没有与你的问题有关:它是用于在Windows上运行UNIX程序,根本不是你所要求的。
其次,你的问题似乎是:“我如何在一个系统上运行预构建的php-cgi二进制文件,而这个系统的glibc比一个php-cgi已经建立了?”,而不是编译任何事情。
要那个问题,答案是:你不能(很容易) - UNIX系统不支持前向二进制兼容性(在新系统上构建,在较旧的系统上运行)。仅支持向后兼容性(旧的动态链接二进制文件继续在较新的系统上运行)。
你最好的方法是尝试在你的系统上构建php-cgi(这将消除它对GLIBC_2.7
的依赖。如果你不能,你应该仍然可以对unpacked glibc运行这样的二进制文件 - 2.7 build, if 这个二进制文件不会重新执行自己。假设你将glibc-2.7解压缩到例如/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解决所有问题的信念之外,你似乎没有任何理由想这样做。