LINUX.ORG.RU

Не получается собрать PHP под Mipsel


0

1

Доброе время суток! Столкнулся со следующей проблемой. Мне необходимо собрать PHP под архитектуру Mipsel с определенными ключами. Поставил Ubuntu 11.04, toolchain (как описано здесь http://www.hub.ru/wiki/%D0%9A%D1%80%D0%BE%D1%81%D1%81-%D0%BA%D0%BE%D0%BC%D0%BF%D0%B8%D0%BB%D1%8F%D1%86%D0%B8%D1%8F).

Для проверски сделал make mc-ipk. Сборка прошла, пакет сформировался (т.е. предположительно все работает).

Приступил к сборе php. И возникла следующая ошибка:

./configure: 11818: 5: Bad file descriptor
./configure: 11818: :: checking for __dn_skipname in -lbind: not found
./configure: 11818: 6: Bad file descriptor
./configure: 11818: checking for __dn_skipname in -lbind... : not found
./configure: 11818: ac_fn_c_try_link: not found
./configure: 11818: 5: Bad file descriptor
./configure: 11818: :: result: no: not found
./configure: 11818: 6: Bad file descriptor
./configure: 11818: no: not found
./configure: 11823: 5: Bad file descriptor
./configure: 11823: :: checking for ANSI C header files: not found
./configure: 11823: 6: Bad file descriptor
./configure: 11823: checking for ANSI C header files... : not found
./configure: 11922: ac_fn_c_try_compile: not found
./configure: 11924: 5: Bad file descriptor
./configure: 11924: :: result: no: not found
./configure: 11924: 6: Bad file descriptor
./configure: 11924: no: not found
./configure: 11971: ac_cv_header_dirent_dirent.h: not found
./configure: 11971: 5: Bad file descriptor
./configure: 11971: :: checking for dirent.h that defines DIR: not found
./configure: 11971: 6: Bad file descriptor
./configure: 11971: checking for dirent.h that defines DIR... : not found
eval: 1: Bad substitution
make: *** [/root/optware/oleg/builds/php/.configured] Ошибка 2

И всё! Гуглил и задавал вопросы яндексу - ничего не помогло! Перерыл php.mk и configurate - все без толку! Помогите, вторую ночь не сплю!



Последнее исправление: vitus153 (всего исправлений: 2)
Ответ на: комментарий от vitus153

Это установочный образ дебиана для мипсела, посля установки которого больше о компиляции думать особо не прийдется..... Если производительность платформы конечно же позволит его поставить :)

Jetty ★★★★★
()
Ответ на: комментарий от Jetty

Я в Linux мягко говоря вообще не силен. У меня суть в следующем. Я хотел собрать PHP с определенными ключами для маршрутизатора ASUS N56U. Собирать на нем не вариант. Поставил Ubuntu и toolchain (как описано здесь: http://www.nslu2-linux.org/wiki/Optware/AddAPackageToOptware ) для платформы oleg. Для пробы собрал nginx и mc - все нормуль. начал собирать PHP, она собрала необходимые доп. пакеты (mysql и т.п.), а когда начала configure выдала рулон сообщений. Если ставить этот пакет, то еще тогда отправьте где лучше об этом почитать. На какую платформу он ставится?

vitus153
() автор топика
Ответ на: комментарий от vitus153

http://www.linuxfromscratch.org/

//google: Кросс-компилированный Linux From Scratch mips, сверяем даты чтоб не читать тухлятину.

p.s. хозяйке на заметку:

вместо glibc ставим uClibe

system-root ★★★★★
()
Ответ на: комментарий от lazyklimm

Может я чего-то не понимаю. Я хочу скомпилить пакет на Ubuntu под мипсел, Ubuntu стоит на ноуте. А компилить буду для маршрутизатора, чтобы на нем установить полученный пакет

vitus153
() автор топика
Ответ на: комментарий от system-root

так я именно и делаю кросс-компиляцию под свой маршрутизаторный проц!

vitus153
() автор топика
Ответ на: комментарий от system-root

я так компилил себе nginx - все прошло без ошибок и теперь он у меня благополучно установлен на маршрутизатор и крутится

vitus153
() автор топика
Ответ на: комментарий от vitus153

http://www.hub.ru/wiki/Кросс-компиляция - начинал с вот этого http://www.nslu2-linux.org/wiki/Optware/AddAPackageToOptware - здесь понял как довести все до ума

$ cd optware; make <platform>-target $ cd <platform>; make directories toolchain ipkg-utils

в моем случае platform = oleg

vitus153
() автор топика
Ответ на: комментарий от vitus153

у мне опять разрыв шаблона. нельзя прибежать в директорию к php и орать make. а где зависимости? где ./configure --blablablabla? ох, ставил бы всё на qemu с эмуляцией mips, уже было б всё готово. прям оттуда бы и компилял.

system-root ★★★★★
()
Ответ на: комментарий от system-root

ну я почти так и делаю :)) в плане иду по пути в /optware/oleg/ и пишу make php-ipk. В папке make там есть файл php.mr в нем прописан вызов configure уже с необходимыми блабла. А вот еще вопросик, то что выводится на экран, т.е. то что делается при выполнение make не пишется ни в какой лог? то что я привел в первом посте, это крайне малая часть, но структура ошибок та же самая, только имена библиотек меняются

vitus153
() автор топика
Ответ на: комментарий от vitus153

что касается qemu с эмуляцией mips. Если здесь не победю, тло буду рассматривать этот вариант :(( А учитывая мои слабые знания Линукс, опять бессонные ночи пойдут

vitus153
() автор топика
Ответ на: комментарий от vitus153

слушай я понимаю что для тебя это абракадабра, но ты самое интересное то не показал =) раз решил эмбиент системы компилировать, начни хотя б с того, чтоб понимать что происходит, где 3тыщи строк распаковки архива который нафиг никому не нужны, а где уже

php-5.2.17/ext/make gdbm-stage

интересные строки пошли.

в общем ты лог файл удали и по новой, только с 3020 строки, ну в смысле не как обезьянка с 3020ой, а с

php-5.2.17/ext/soap/tests/bugs/bug38067.wsdl
php-5.2.17/ext/make gdbm-stage
make[1]: Вход в каталог `/root/optware/oleg'

и дальше до конца пока не будет

make: *** [/root/optware/oleg/builds/php/.configured] Ошибка 2

system-root ★★★★★
()
Ответ на: комментарий от system-root

на сколько я понял в лог попало то, что выполнил файл make.rm . В конце лога видно что сформировался вызов configure. Так как это выполняется в другом месте в лог не попало.

Для меня это не совсем абракадабра, т.к. логику я осознаю, пусть и не полностью понимаю. Сейчас постараюсь сделать более полезные логи, убрав всю лишнюю конетель.

vitus153
() автор топика
Ответ на: комментарий от vitus153

я обновил лог по той же ссылке вот из него пытаюсь выполнить следующий кусок кода (именно при его выполнении возникает ошибка)

(cd /root/optware/oleg/builds/php; \
AR=/root/optware/oleg/toolchain/mipsel-linux-uclibc/gcc-4.1.1-uclibc-0.9.28/bin/mipsel-linux-uclibc-ar AS=/root/optware/oleg/toolchain/mipsel-linux-uclibc/gcc-4.1.1-uclibc-0.9.28/bin/mipsel-linux-uclibc-as LD=/root/optware/oleg/toolchain/mipsel-linux-uclibc/gcc-4.1.1-uclibc-0.9.28/bin/mipsel-linux-uclibc-ld NM=/root/optware/oleg/toolchain/mipsel-linux-uclibc/gcc-4.1.1-uclibc-0.9.28/bin/mipsel-linux-uclibc-nm CC=/root/optware/oleg/toolchain/mipsel-linux-uclibc/gcc-4.1.1-uclibc-0.9.28/bin/mipsel-linux-uclibc-gcc CPP="/root/optware/oleg/toolchain/mipsel-linux-uclibc/gcc-4.1.1-uclibc-0.9.28/bin/mipsel-linux-uclibc-gcc -E" GCC=/root/optware/oleg/toolchain/mipsel-linux-uclibc/gcc-4.1.1-uclibc-0.9.28/bin/mipsel-linux-uclibc-gcc CXX=/root/optware/oleg/toolchain/mipsel-linux-uclibc/gcc-4.1.1-uclibc-0.9.28/bin/mipsel-linux-uclibc-g++ RANLIB=/root/optware/oleg/toolchain/mipsel-linux-uclibc/gcc-4.1.1-uclibc-0.9.28/bin/mipsel-linux-uclibc-ranlib STRIP=/root/optware/oleg/toolchain/mipsel-linux-uclibc/gcc-4.1.1-uclibc-0.9.28/bin/mipsel-linux-uclibc-strip \
CPPFLAGS="-O2   -pipe  -I/root/optware/oleg/staging/opt/include -I/root/optware/oleg/staging/opt/include/libxml2 -I/root/optware/oleg/staging/opt/include/libxslt -I/root/optware/oleg/staging/opt/include/libexslt " \
LDFLAGS=" -L/root/optware/oleg/staging/opt/lib -Wl,-rpath,/opt/lib -Wl,-rpath-link,/root/optware/oleg/staging/opt/lib -L/root/optware/oleg/staging/opt/lib/mysql -Wl,-rpath=/opt/lib/mysql -ldl -lpthread" \
CFLAGS="-O2   -pipe  -I/root/optware/oleg/staging/opt/include -I/root/optware/oleg/staging/opt/include/libxml2 -I/root/optware/oleg/staging/opt/include/libxslt -I/root/optware/oleg/staging/opt/include/libexslt   -L/root/optware/oleg/staging/opt/lib -Wl,-rpath,/opt/lib -Wl,-rpath-link,/root/optware/oleg/staging/opt/lib -L/root/optware/oleg/staging/opt/lib/mysql -Wl,-rpath=/opt/lib/mysql -ldl -lpthread" \
PATH="/root/optware/oleg/staging/bin:$PATH" \
PHP_LIBXML_DIR=/root/optware/oleg/staging/opt \
EXTENSION_DIR=/opt/lib/php/extensions \
ac_cv_func_memcmp_working=yes \
cv_php_mbstring_stdarg=yes \
STAGING_PREFIX="/root/optware/oleg/staging/opt" \
 LIBS=-lsasl2 \
./configure \
--build=i386-pc-linux-gnu \
--host=mipsel-linux \
--target=mipsel-linux \
--prefix=/opt \
--with-config-file-scan-dir=/opt/etc/php.d \
--with-layout=GNU \
--disable-static \
--enable-bcmath=shared \
--enable-calendar=shared \
--enable-dba=shared \
--with-inifile \
--with-flatfile \
--enable-dom=shared \
--enable-embed=shared \
--enable-exif=shared \
--enable-ftp=shared \
--enable-mbstring=shared \
--enable-pdo=shared \
--enable-shmop=shared \
--enable-sockets=shared \
--enable-sysvmsg=shared \
--enable-sysvshm=shared \
--enable-sysvsem=shared \
--enable-xml=shared \
--enable-xmlreader=shared \
--with-iconv \
--with-bz2=shared,/root/optware/oleg/staging/opt \
--with-curl=shared,/root/optware/oleg/staging/opt \
--with-db4=/root/optware/oleg/staging/opt \
--with-dom=shared,/root/optware/oleg/staging/opt \
--with-gdbm=/root/optware/oleg/staging/opt \
--with-gd=shared,/root/optware/oleg/staging/opt \
--with-imap=shared,/root/optware/oleg/staging/opt \
--with-mysql=shared,/root/optware/oleg/staging/opt \
--with-mysql-sock=/tmp/mysql.sock \
--with-mysqli=shared,/root/optware/oleg/staging/opt/bin/mysql_config \
--with-pgsql=shared,/root/optware/oleg/staging/opt \
--with-mssql=shared,/root/optware/oleg/staging/opt \
--with-unixODBC=shared,/root/optware/oleg/staging/opt \
--with-openssl=shared,/root/optware/oleg/staging/opt \
--with-sqlite=shared \
--with-pdo-mysql=shared,/root/optware/oleg/staging/opt \
--with-pdo-pgsql=shared,/root/optware/oleg/staging/opt \
--with-pdo-sqlite=shared \
--with-xsl=shared,/root/optware/oleg/staging/opt \
--with-zlib=shared,/root/optware/oleg/staging/opt \
--with-libxml-dir=/root/optware/oleg/staging/opt \
--with-jpeg-dir=/root/optware/oleg/staging/opt \
--with-png-dir=/root/optware/oleg/staging/opt \
--with-freetype-dir=/root/optware/oleg/staging/opt \
--with-zlib-dir=/root/optware/oleg/staging/opt \
--with-pcre-regex=/root/optware/oleg/staging/opt \
--enable-maintainer-zts \
--with-ldap=shared,/root/optware/oleg/staging/opt \
--with-ldap-sasl=/root/optware/oleg/staging/opt \
--without-pear \
--with-xmlrpc=shared \
        )

но никак не могу результат его работы в лог файл запихать

vitus153
() автор топика
Ответ на: комментарий от vitus153

Возможно полезнее даже будет вот этот лог - результат выполнения make php-ipk 2>config.log

vitus153
() автор топика

Чувак... я бы НЕ советовал тебе вообще этим заниматься.
Либо бросай нафиг, либо ставь dd/open wrt.
Ты НЕ понимаешь что ты делаешь, и, судя по всему, и не собираешься понимать. Положи свой сайт на гавнохостинге, ничего зазорного тут нет, перестань насиловать железку...

Ну либо есть другой путь:
читаем про архитектуры
читаем про компиляцию(в смысле что это такое и с чем его едят)
читаем про GNU Make
читаем про GNU Autolulz
читаем про GNU Libc
читаем про uClibc
пишем и пробуем собирать простенькие примеры
пишем и пробуем собирать простенькие примеры с зависимостями от других либ
читаем про GNU Make
читаем про GNU Make
пишем и пробуем собирать простенькие примеры с зависимостями от других либ
читаем про GNU GCC
читаем про GNU Make
Собираем OpenSSL
Собираем libxml
пишем и пробуем собирать простенькие примеры с зависимостями от них
убиваем пару часов выясняя что на целевой платформе другой ABI и совсем другие версии библиотек
Собираем все сначала почитывая про GNU Make, GNU GCC, и мангу(трендово же!!)
Бросаем все нафиг ставим OpenWRT
Удаляем OpenWRT
говносайт выкладываем на говнохостинг.

Jetty ★★★★★
()
Ответ на: комментарий от Jetty

...
PROFIT!!!!


Есть еще третий путь - тебе может повезти и ты _случайно_ всетаки что-то насобираешь(правда оно толком работать не будет)

Jetty ★★★★★
()
Ответ на: комментарий от Jetty

Я все же еще помучаюсь, nginx собирался раньше и уже пол года крутится, без каких-либо нареканий. Может случайно получится собрать и PHP :))

vitus153
() автор топика
Ответ на: комментарий от vitus153

тем более пакет клепался не мной. он из optware - как-то же его собирали? да и я не переделываю его, просто при компиляции хочу добавить библиотеку iconv!

vitus153
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.