用于QoriQ P1022(DS213+)的CROSS COMPILE PHP 5.5.1-致命错误:Balloc()分



我在为DS2013+(QoriQ P1022)交叉编译php方面挣扎了好几天

目标:能够利用php的pcntl_fork()

表示:

  • php的编译版本,配置有:--enable-pcntl
  • DSM工具链4.1:http__sourceforge.net/projects/dsgpl/f…z/download)
  • 带有Debian 32b:ftp_free.fr/mirrors/ftp.ubuntu.co…d-i386.iso的虚拟机
  • Synology第三方指导PDF:http__usdl.Synology.com/download/ds/us…_Guide.PDF
  • php-5.5.11:http__www.php.net/get/php-5.5.11.tar.gz/from/a/mirror
  • php-5.6.0beta1:http__downloads.hp.net/tyrael/hp-5.6.0beta.tar.gz
  • 我的NAS:213+,引导程序修改了以下在线文章,并利用ipkg存储库:http__packages.quadrat4.de/因此,通过以上所有内容,我打算在Debian上交叉编译php5.5.1(或5.6bet10):

问题:每次我都会出现以下错误:致命错误:Balloc()分配超出了列表边界。。。。

来自debian:

我的根工作文件夹:/home/enola/NAS_Compiler/

PhP在这里没有压力:/home/enola/NAS_Compiler/PhP/5.5.11/home/enola/NAS_Compiler/PhP-56.6.0beta1

工具链:tar-xvzf gcc4374_eglibc2874_qoriq-GPL.tgzmv powerpc none linux gnuspe/usr/local/

export CC=/usr/local/powerpc-none-linux-gnuspe/bin/powerpc-none-linux-gnuspe-gcc
export CXX=$CC
(also tried with CXX=/usr/local/powerpc-none-linux-gnuspe/bin/powerpc-none-linux=gnuspe-g++)
(and without it)
export LD=/usr/local/powerpc-none-linux-gnuspe/bin/powerpc-none-linux-gnuspe-ld
export AR=/usr/local/powerpc-none-linux-gnuspe/bin/powerpc-none-linux-gnuspe-ar
export RANLIB=/usr/local/powerpc-none-linux-gnuspe/bin/powerpc-none-linux-gnuspe-ranlib
export CFLAGS='-I/usr/local/powerpc-none-linux-gnuspe/include -mcpu=8548 -mhard-float -mfloat-gprs=double'
(also tried with CFLAGS='-I/usr/local/powerpc-none-linux-gnuspe/include')
export LDFLAGS="-L/usr/local/powerpc-none-linux-gnuspe/lib"

我尝试了多个。下面配置最简单的:

./configure --host=powerpc-unknow-linux --target=powerpc-unknow-linux --build=i686-pc-linux --prefix=/home/enola/NAS_Compiler/usr/local/ --disable-all --with-layout=GNU --enable-debug

尝试不使用--withlayout=GNU,--enable-debug)也尝试使用--enable内联优化

make CC="${CC}" AR="${AR} r"

编译后,我将sapi/cli.php复制到NAS

来自DSM(NAS):

PHP 5.5.11然后执行它:/php-c/php.ini-simple-f test_microtime.php结果:致命错误:Balloc()分配超出了…中的列表边界。。。。。第3行上的test_microtime.php

PHP 5.6.0beta0然后执行它:/php-c/php.ini-simple-f te相同的结果…:致命错误:Balloc()分配超出了第3行上…test_microtime.php中的列表边界

test_microtime.php:

<?Php
echo microtime(true);
?>

来自上述命令的phpscript、strace、php.ini-simple和php二进制文件。。都在这里:http://www.mobilutils.com/20140423_sentToForum.zip

SHA1:(20140423_sentToForum.zip)=5a04cb7015c28d798ac2446e14fd9c114f47a660

通过一些研究,我发现了这一点,而其他研究则对如何解决这个问题一无所知:(:https://bugs.php.net/bug.php?id=47980

所以我写这篇文章是为了防止你们中的一个人知道我做错了什么。。。对任何可能有助于解决此问题的建议和建议持开放态度,

附言:在我尝试时间函数之前,我以为一切都像一种魅力:)。。。。

谢谢,John

通常我更喜欢在模拟目标机器硬件的虚拟机上运行Linux。你也可以更好地测试二进制/事物。

我成功地使用了QEMU模拟器,带有ARM/PPowerPC和MIPS目标。

你也可以在另一个帖子中参考我的答案。报价:

QEMU将您的电脑变成一个虚拟机监控程序,即像VirtualBox一样工作。但是QEMU还可以模拟不同于主机PC的CPU。

您可以在标准(廉价)x86 PC上安装并运行PowerPC Linux虚拟机并直接在该VM中编译二进制文件。CPU模拟有点慢,但它可以工作。

相关内容

  • 没有找到相关文章

最新更新