我为DS2013 +(QoriQ P1022)交叉编译php而挣扎了几天
目标:能够利用php利用pcntl_fork()
表示:
问题:每次我都会遇到此错误: 致命错误:Balloc()分配超出列表边界....
来自debian:
我的根工作文件夹:/ home / enola / NAS_Compiler /
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:
./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
尝试没有--with-layout = GNU, - enable-debug) 也试过--enable-inline-optimization
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
所以我写这篇文章以防你们中的一个人知道我做错了什么...... 欢迎任何可能有助于解决此问题的建议,
PS:我认为一切都像魅力一样,直到我尝试时间功能:).... ....感谢, 约翰
答案 0 :(得分:0)
通常,我更喜欢在模拟目标机器硬件的VM上运行Linux。 您还可以更好地测试二进制文件/东西。
我已经成功地使用了带有ARM / PowerPC和MIPS目标的QEMU仿真器。
您还可以在另一个线程中引用我的answer。引用:
QEMU使您的PC进入虚拟机监控程序,即像VirtualBox一样工作。但 QEMU还可以仿真与主机PC不同的CPU。
您可以在标准(廉价)x86 PC上安装和运行PowerPC Linux VM 并直接在该VM中编译二进制文件。 CPU仿真有点慢,但是可以。