LinuxForum.Fans
Тема

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

Автор: vitus153 36 сообщений 9298 просмотров
#250056

Доброе время суток!
Столкнулся со следующей проблемой. Мне необходимо собрать 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. И возникла следующая ошибка:

text
./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 - все без толку! Помогите, вторую ночь не сплю!

#250070

на мой взгляд инструкция косая... в частности после export'ов отключаться от машины нельзя...
так что описывайте подробно всё, что делали...

#250072

Если начать с самого начало, то мне необходимо собрать php для ASUS N56U (маршрутизатор). Он поддерживает optware. Я поставил php из оптваре, но он собран без библиотеки iconv.
Пытался нативно скомпилить, безуспешно, бился неделю и бросил. Поставил Ubuntu, поставил toolchain. Зашел в файл php.mk дописал в нужном месте ключ. После этого сделал make php-ipk. C инета выкачивались необходимые пакеты, чего-то делалось, а потом выдало, то что я привел (я привел окончание, там было много много подобно /configure: 11971: :: checking for dirent.h that defines DIR: not found, ./configure: 11971: 6: Bad file descriptor только ждля разных библиотек).
Перерыл все что мог - ничего не помогает. http://www.cyberforum.ru/redirector.php?url=aHR0cCUzQSUyRiUyRnBocGNsdWIucnUlMkZ0YWxrJTJGdGhyZWFkcyUyRiUyNUQwJTI1OUElMjVEMCUyNUIwJTI1RDAlMjVCQS0lMjVEMCUyNUIyLXVidW50dS0lMjVEMSUyNTgxJTI1RDAlMjVCNCUyNUQwJTI1QjUlMjVEMCUyNUJCJTI1RDAlMjVCMCUyNUQxJTI1ODIlMjVEMSUyNThDLXBocC0lMjVEMCUyNUIxJTI1RDAlMjVCNSUyNUQwJTI1Qjctc3Vob3Npbi42NzI0MyUyRnBhZ2UtMg== - вот здесь (в конце страницы) у человека аналогичная проблема, я так понял не решилась

#250076

пользуйтесь или хотя бы оглядывайтесь на официальную доку...
отсюда: http://www.nslu2-linux.org/wiki/Optware/AddAPackageToOptware

text

   svn co http://svn.nslu2-linux.org/svnroot/optware/trunk optware
   cd optware; make <platform>-target
   cd <platform>; make directories toolchain ipkg-utils

какая у вас платформа/прошивка на роутере? и где именно вы указаль --with-iconv?
собственно дальше предлагаю пересобрать тулчейн по этой схеме... [ответьте на предыдущее перед сборкой]

ЗЫ: по ссылке трабла не связана с кросс-компиляцией... там похоже просто -devel пакеты зависимостей забыли установить...

#250079

пользуйтесь или хотя бы оглядывайтесь на официальную доку...
отсюда: http://www.nslu2-linux.org/wiki/Optware … eToOptware

Официальные доки я читал. Делал все в соответствии.
Платформа oleg
make directories toolchain ipkg-utils - тоже выполнено. Пробовал для теста собирать nginx и mc - собрались. Не собирается php

Ключ добавлял в файл php.mr

text
autoreconf -vif $(@D)
    (cd $(@D); \
        $(TARGET_CONFIGURE_OPTS) \
        CPPFLAGS="$(STAGING_CPPFLAGS) $(PHP_CPPFLAGS)" \
        LDFLAGS="$(STAGING_LDFLAGS) $(PHP_LDFLAGS)" \
        CFLAGS="$(STAGING_CPPFLAGS) $(PHP_CPPFLAGS) $(STAGING_LDFLAGS) $(PHP_LDFLAGS)" \
        PATH="$(STAGING_DIR)/bin:$$PATH" \
        PHP_LIBXML_DIR=$(STAGING_PREFIX) \
        EXTENSION_DIR=/opt/lib/php/extensions \
        ac_cv_func_memcmp_working=yes \
        cv_php_mbstring_stdarg=yes \
        STAGING_PREFIX="$(STAGING_PREFIX)" \
        $(PHP_CONFIGURE_ENV) \
        ./configure \
        --build=$(GNU_HOST_NAME) \
        --host=$(GNU_TARGET_NAME) \
        --target=$(GNU_TARGET_NAME) \
        --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,$(STAGING_PREFIX) \ --with-curl=shared,$(STAGING_PREFIX) \ --with-db4=$(STAGING_PREFIX) \ --with-dom=shared,$(STAGING_PREFIX) \ --with-gdbm=$(STAGING_PREFIX) \ --with-gd=shared,$(STAGING_PREFIX) \ --with-imap=shared,$(STAGING_PREFIX) \ --with-mysql=shared,$(STAGING_PREFIX) \ --with-mysql-sock=/tmp/mysql.sock \ --with-mysqli=shared,$(STAGING_PREFIX)/bin/mysql_config \ --with-pgsql=shared,$(STAGING_PREFIX) \ --with-mssql=shared,$(STAGING_PREFIX) \ --with-unixODBC=shared,$(STAGING_PREFIX) \ --with-openssl=shared,$(STAGING_PREFIX) \ --with-sqlite=shared \ --with-pdo-mysql=shared,$(STAGING_PREFIX) \ --with-pdo-pgsql=shared,$(STAGING_PREFIX) \ --with-pdo-sqlite=shared \ --with-xsl=shared,$(STAGING_PREFIX) \ --with-zlib=shared,$(STAGING_PREFIX) \ --with-libxml-dir=$(STAGING_PREFIX) \ --with-jpeg-dir=$(STAGING_PREFIX) \ --with-png-dir=$(STAGING_PREFIX) \ --with-freetype-dir=$(STAGING_PREFIX) \ --with-zlib-dir=$(STAGING_PREFIX) \ --with-pcre-regex=$(STAGING_PREFIX) \ $(PHP_CONFIGURE_ARGS) \ --without-pear \ --with-xmlrpc=shared \ ) $(PATCH_LIBTOOL) $(@D)/libtool touch $@ php-unpack: $(PHP_BUILD_DIR)/.configured

без него тоже не собирается (восклицательные знаки для выделения поставил)

#250086

гмм... у меня даже тулчейн не собирается - фейлится на том, что все сайты поменялись... у вас он нормально собрался?

#250877

2 Fat-Zer а у меня тулчейн собрался номально, я собирал себе nginx и для теста пробовал собирать mc и php-fcgi - собирались без проблем. Именно проблемы при сборке PHP 5.2.17. Хотя когда собирал тулчейн, возникали ошибки, но они легко решались с помощью яндекса. Если приведете что говорит говорит тулчейн при сборке, могу вспомнить как решал проблему у себя. Да и в целом могу инструкцию привести как ставил это дело у себя

#250892

я забросил на том моменте, когда на kernel.org'е не оказалось bz2 - архивов binutils приемлемых версий... сейчас сам перепаковал 2.16.90.0.3 - вроде собирается... благо он контрольные суммы не проверяет...
+ пришлось вручную кой-чего конфигурировать, что мне тоже не очень понравилось...

ЗЫ: вообще ощущение, что этой штукой года с 2008-го никто не занимался...

[added] а поддержку с++ вы включали?

#250895

"Fat-Zer" написал:
ЗЫ: вообще ощущение, что этой штукой года с 2008-го никто не занимался..
мне тоже так показалось
я скачал пакет binutils-2.17.50.0.8.tar.bz2 http://ftp.gnu.org/gnu/binutils/
#250899
"Fat-Zer" написал:
added] а поддержку с++ вы включали?

Это как? я не силен в Линексе. Все узнаю у яндекса :)

#250900
"vitus153" написал:
Это как? я не силен в Линексе. Все узнаю у яндекса

cd oleg/toolchain/buildroot && make menuconfig - там Toolchain Options ---> [ ] Build/install c++ compiler and libstdc++?
в любом случае похоже, что он не собирается... так что не берите в голову =))

#250904

"Fat-Zer" написал:
cd oleg/toolchain/buildroot && make menuconfig - там Toolchain Options ---> [ ] Build/install c++ compiler and libstdc++?
Открываю для себя все больше нового. Это вижу впервые :) у меня стоит [звездочка в скобках] Build/install c++ compiler and libstdc++? - вот так. Как это понять? Установлено?
#250907
"vitus153" написал:
Открываю для себя все больше нового. Это вижу впервые у меня стоит [звездочка в скобках] Build/install c++ compiler and libstdc++? - вот так. Как это понять? Установлено?

мм - значит установлено... у меня с ним не собирается - где-то в дебрях iostreams ошибка...

#250909

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

#250913
"vitus153" написал:
А вообще могу примерную  свою последоватьльность по сборке тулчейна выслать (я для себя документировал), по причине того что уже третий раз Ubuntu ставлю и с нуля пытаюсь все сделать (каждый раз новым способом), к великому моему сожалению результат всегда один

давайте... может я чего-то из виду упускаю...

#250914

Тут в тексте допускается только одна ссылка. Поэтому тяжко будет, может на почту?

#250915
"vitus153" написал:
Тут в тексте допускается только одна ссылка. Поэтому тяжко будет, может на почту?

зачем... на пейстбин...

#250917

Пока начну здесь. Открываем терминал и делаем следующее:

text
sudo apt-get install autoconf automake bash bison bzip2 diffutils dropbear file flex g++ gawk groff libncurses-dev libtool libslang2 make mc patch perl sed shtool subversion tar texinfo zlib1g zlib1g-dev

далее

text
cd ~
svn co http://svn.nslu2-linux.org/svnroot/optware/trunk optware
cd optware
make oleg-target
cd oleg
make directories ipkg-utils

ВАЖНО! Все make надо выполнять находясь в ~/optware/oleg
все проходит на УРА! После этого выполняю
make nginx
Не получается – ошибки. Нету какого-то пакета. Ищу его в интернете и выкачиваю в папке /oleg/downloads/ с помощью команды wget.
Таким образом я скачал пакеты

text
http://ftp.gnu.org/gnu/binutils/binutils-2.17.50.0.8.tar.bz2
text
http://downloads.foonas.org/sources/gbb-6.5.tar.bz2

Пакет nginx был удачно собран! Собирал его в качестве тестового.

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

#250920

В результате куча ошибок, лог приведен здесь http://pastebin.com/U2Zjtvcn
Ну вот в общих чертах, как-то так :(

Войдите или зарегистрируйтесь, чтобы ответить.