在 Solaris 上编译 PHP

在 Solaris 上编译 PHP

--enable-fpm在 Solaris 10 (sun4v sparc SUNW、Sun-Fire-T1000) 上编译 PHP,它停止在

#error Sparc v8 and predecessors are not and will not be supported (see bug report 53310)

出现错误后,我的 CPU 是 v9 ?为什么会出现错误?应如何通知编译以包含-mcpu=v9?这有帮助吗?

编辑:

我尝试编译 5.3.8 和最新的 5.4.7 - 两者都出现错误。PHP 和 PHP-CGI 编译良好。

编辑2:

配置标志是 -

./configure--启用-fpm

答案1

它通常归结为比较和交换指令,该指令在 v8 中不可用,但在 v8+ 和更新的处理器中可用。

很难说哪里出了问题,因为你没有展示你的./configure调用、相关的环境变量,也没有展示失败的确切位置(配置阶段?编译阶段?)。有时会有一个测试检查 v8+,但编写得很糟糕,导致失败。

错误发生的原因并不明显,因为现在编译器默认为 v8+,而不是 v8。如果您未设置任何内容,则应该获得 v8+ 二进制文件(适用于 32 位版本)和 v9 二进制文件(适用于 64 位版本)。

如果您想要发出您想要的构建信号-mcpu=v9,请在环境变量中导出它CFLAGS

答案2

终于让它运行起来了。

需要使用以下设置进行编译。

export CC=gcc
export CFLAGS="-m64"
export CXX=gcc
export CXXFLAGS="-m64"
export LDFLAGS="-m64 -L/lib/64 -L/usr/sfw/lib/64"
export LD_LIBRARY_PATH="/usr/local/lib/sparcv9/:/usr/local/lib:/usr/local/apache2/lib:/usr/sfw/lib/sparcv9:/usr/local/lib/sparcv9:/usr/lib/sparcv9"
export LDFLAGS="-lrt"

相关内容