Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/266.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
交叉编译QoriQ P1022(DS213+;)的PHP 5.5.1-致命错误:Balloc()分配超过_Php_Cross Compiling_Powerpc_Synology - Fatal编程技术网

交叉编译QoriQ P1022(DS213+;)的PHP 5.5.1-致命错误:Balloc()分配超过

交叉编译QoriQ P1022(DS213+;)的PHP 5.5.1-致命错误:Balloc()分配超过,php,cross-compiling,powerpc,synology,Php,Cross Compiling,Powerpc,Synology,我为DS2013+交叉编译php(QoriQ P1022)苦苦挣扎了几天 目标:能够利用php的pcntl_fork() 表示: 配置为--enable pcntl的php编译版本 DSM工具链4.1:http_usourceforge.net/projects/dsgpl/f。。。(下载) 使用Debian 32b的虚拟机:ftp\uu ftp.free.fr/mirrors/ftp.ubuntu.co。。。d-i386.iso Synology第三方说明PDF:http\uu usdl.S

我为DS2013+交叉编译php(QoriQ P1022)苦苦挣扎了几天

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

表示:

  • 配置为--enable pcntl的php编译版本
  • DSM工具链4.1:http_usourceforge.net/projects/dsgpl/f。。。(下载)
  • 使用Debian 32b的虚拟机:ftp\uu ftp.free.fr/mirrors/ftp.ubuntu.co。。。d-i386.iso
  • Synology第三方说明PDF:http\uu 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.php.net/tyrael/php-5.6.0beta1.tar.gz
  • 我的NAS:213+,在以下在线文章中修改了引导,并利用ipkg存储库:http__packages.quadra4.de/ 因此,我打算在Debian上交叉编译php5.5.1(或5.6beta0):
问题:每次我出现此错误时: 致命错误:Balloc()分配超出列表边界

来自debian:

我的根工作文件夹:/home/enola/NAS\u编译器/

PhP正在此处解压缩: /home/enola/NAS_Compiler/PhP/PhP-5.5.11 /home/enola/NAS_Compiler/PhP/PhP-5.6.0beta1

工具链: tar-xvzf gcc4374_eglibc2874_qoriq-GPL.tgz mv 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
尝试不使用--layout=GNU,--启用调试) 还尝试了--启用内联优化

make CC="${CC}" AR="${AR} r"
编译后,我将sapi/cli/php复制到NAS

来自DSM(NAS):

PHP5.5.11 然后执行它:./php-c./php.ini-simple-f test\u microtime.php 结果: 致命错误:Balloc()分配超出了…..中的列表边界。。。。。在第3行测试_microtime.php

PHP5.6.0beta0 然后执行它:./php-c./php.ini-simple-fte 同样的结果…: 致命错误:Balloc()分配超出了…中的列表边界。。。。在第3行测试_microtime.php

test_microtime.php:


来自上述命令的phpscript、strace、php.ini-simple和php二进制文件。。 都在这里:

SHA1:(20140423_sentToForum.zip)=5a04cb7015c28d798ac2446e14fd9c114f47a660

通过一些研究,我发现这一点,而其他人对如何解决这个问题一无所知:(:

所以我写这篇文章是为了防止你们中的一个知道我做错了什么。。。 接受任何可能有助于解决此问题的建议

PS:在我尝试时间函数之前,我一直认为一切都很有魅力:)

谢谢,
John

通常我更喜欢在模拟目标机器硬件的虚拟机上运行Linux。 您还可以更好地测试二进制代码

我已经成功地使用了QEMU模拟器,使用了ARM/PowerPC和MIPS目标

您也可以在另一个线程中参考我的。引述:

QEMU将您的PC置于虚拟机监控程序中,即工作方式类似于VirtualBox。但是 QEMU还可以模拟不同于主机PC的CPU

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

<?Php
echo microtime(true);
?>