1

DS2013+ (QoriQ P1022) 用の php のクロス コンパイルに何日も苦労しました。

目的: pcntl_fork() を php で活用できるようにする

意味 :

  • --enable-pcntl で構成された php のコンパイル済みバージョン
  • DSM ツールチェーン 4.1: http__sourceforge.net/projects/dsgpl/f ... z/download )
  • Debian 32b の VM : ftp__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.php.net/tyrael/php-5.6.0beta1.tar.gz
  • 私のNAS:213+、オンライン記事に従ってブートストラップを変更し、ipkgリポジトリを活用: http__packages.quadrat4.de/ したがって、上記のすべてで、Debianでphp5.5.1(または5.6beta0)をクロスコンパイルするつもりでした:

問題 :このエラーが発生するたびに: 致命的なエラー: Balloc() の割り当てがリストの境界を超えています....

デビアンから:

私のルート作業フォルダー: /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() の割り当てが ..... test_microtime.php の 3 行目でリストの境界を超えています

PHP 5.6.0beta0 次にそれを実行します :./php -c ./php.ini-simple -f te 同じ結果...: 致命的なエラー: Balloc() の割り当てがリストの境界を超えています.... test_microtime.php 3 行目

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:時間関数を試すまで、すべてが魔法のように機能していると思いました:)...

ありがとう、ジョン

4

1 に答える 1