CROSS COMPILE PHP 5.5.1 для QoriQ P1022 (DS213+) - Неустранимая ошибка: распределение Balloc() превышает
Я боролся в течение нескольких дней с кросс-компиляцией php для DS2013+ (QoriQ P1022)
цель: возможность использовать pcntl_fork() с php
средства:
- скомпилированная версия php, настроенная с помощью: --enable-pcntl
- DSM toolchain 4.1: http__sourceforge.net/projects/dsgpl/f... z / download)
- ВМ с Debian 32b: 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/ Итак, со всем вышеизложенным я намеревался кросс-компилировать php5.5.1 (или 5.6beta0) на Debian:
Проблема: Каждый раз, когда я сталкиваюсь с этой ошибкой: Неустранимая ошибка: распределение 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-оптимизацией
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: я думал, что все работает как шарм, пока я не попробовал функции времени:)
спасибо Джон
1 ответ
Обычно я предпочитаю запускать Linux на виртуальной машине, которая имитирует оборудование целевой машины. Вы также можете проверить бинарный файл / вещи лучше.
Я успешно использовал эмулятор QEMU с целями ARM/PowerPC и MIPS.
Вы также можете сослаться на мой ответ в другой теме. Цитата:
QEMU превращает ваш компьютер в гипервизор, т.е. работает как VirtualBox. Но QEMU также может эмулировать процессоры, которые отличаются от центрального компьютера.
Вы можете установить и запустить виртуальную машину PowerPC Linux на стандартном (дешевом) компьютере с архитектурой x86 и скомпилировать свои двоичные файлы непосредственно на этой виртуальной машине. Эмуляция процессора немного медленная, но работает.