LinuxForum.Fans
Тема

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

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

мои ошибки по ходу:

"vitus153" написал:
make directories ipkg-utils
text
alexander@goblin /tmp/optware/oleg $ make directories ipkg-utils
make/libevent.mk:23: *** пропущен разделитель.  Останов.      # надо удалить пробел в +=
"vitus153" написал:
make nginx
text

make -C /tmp/optware/oleg/toolchain/buildroot LINUX_HEADERS_SOURCE=linux-libc-headers-oleg.tar.bz2 LINUX_HEADERS_UNPACK_DIR=/tmp/optware/oleg/toolchain/buildroot/toolchain_build_mipsel/linux \
UCLIBC_CONFIG_FILE=/tmp/optware/oleg/sources/buildroot/uClibc-0.9.28.config
make[1]: Вход в каталог `/tmp/optware/oleg/toolchain/buildroot'
package/raidtools/raidtools.mk:46: *** пропущен разделитель(не имели ли вы в виду TAB вместо восьми пробелов?).  Останов.
make[1]: Выход из каталога `/tmp/optware/oleg/toolchain/buildroot'
make: *** [/tmp/optware/oleg/toolchain/buildroot/.built] Ошибка 2

# make правильно говорит - заменяем пробелы на таб. # + тут пришлось создать симлинк oleg/toolchain/buildroot/dl на oleg/downloads # иначе поведение было очень странным

"vitus153" написал:

такого файла нет... очень хотедлось бы конечно найти именно эту версию.

#250932
"Fat-Zer" написал:
такого файла нет... очень хотедлось бы конечно найти именно эту версию.

нашел здесь http://downloads.foonas.org/sources/

#250974

проблему воспроизвожу... виноваты или патчи, которые они накладывают или слишком свежие autotools.
из зависимостей ещё не собрался freetds ну да и шут с ним...
[added]
autoconf похоже не причём...

#251003

бинго! нужен autoconf версии 2.63. с ним ./configure получасется нормальный... может и с каким нибудь другими ещё будет работать...

правда потом вылезает проблема с libtools.
она решается заменой в make/php.mk autoreconf -vif $(@D) на

text

    (cd $(@D); \
    aclocal; \
    libtoolize --force; \
    autoheader; \
    autoconf; \
    )

после этого сборка идёт...

ЗЫ: autotools - это адское поделие из мастерской ужасов столлмана =)
так что до этого было очень не просто докопаться... ИМХО с вас пиво =)))

#251018

Я вчера не дождался (ждал до часа ночи). Сегодня обязательно все попробую. Спасибо. Позже отпишусь!!!

#251026
"Fat-Zer" написал:
нужен autoconf версии 2.63

Что-то никак не могу допетрить как его установить?

И немного подробнее можно по изменениям в php.mk
Там имеет место быть следующая конструкция:

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) \
        --enable-maintainer-zts \
        --with-ldap=shared,/root/optware/oleg/staging/opt \
        --with-ldap-sasl=/root/optware/oleg/staging/opt \
        --without-pear \
        --with-xmlrpc=shared \
    )
    $(PATCH_LIBTOOL) $(@D)/libtool
    touch $@

Ее надо заменить на

text
(cd $(@D); \
    aclocal; \
    libtoolize --force; \
    autoheader; \
    autoconf; \
    )

Я правильно понял?

#251030
"vitus153" написал:
Что-то никак не могу допетрить как его установить?

вот тут я уже помочь не смогу... о репозитариях бубунты и их содержимом я слабо осведомлён... может кто -то ещё подскажет.
общий принцип: aptitude в зубы и смотреть что-куда... на крайний случай самому пакет собрать...

перед сборки php проверьте autoconf -V

"vitus153" написал:
Я правильно понял?

только строчку "autoreconf -vif $(@D)"
может достаточно было бы добавить libtoolize, но тут надо пробовать...

#251031
"Fat-Zer" написал:
может достаточно было бы добавить libtoolize,

Что-то все равно теже ошибки. Но я поставил пока autoconf 2.67 (другого не нашел, буду искать)

aptitude - а это что такое (и где лучше всего почитать как его в зубы брать).
Я буду еще активно разбираться и устаканиваться кашу в голове, если что, можно задавать вопросы?

А какую версию PHP получилось собрать?

#251032
"vitus153" написал:
Что-то все равно теже ошибки. Но я поставил пока autoconf 2.67 (другого не нашел, буду искать)

67 - больно новая... с 68-й - у меня как раз не собирается... лучше почтарше брать, но не меньше 2.50 или даже 59.

"vitus153" написал:
aptitude - а это что такое (и где лучше всего почитать как его в зубы брать).

это псевдографическая морда к apt, системе управления пакетами... просто в ней ИМХО проще ориентироваться, а со всякими apt-search, apt-cache, или как их там, я совсем не знаком...

"vitus153" написал:
Я буду еще активно разбираться и устаканиваться кашу в голове, если что, можно задавать вопросы?

конечно =)

"vitus153" написал:
А какую версию PHP получилось собрать?

5.2.17 она вроде по умолчанию. отключил сборку mssql, iconv не включал

#251034

Ну можно я задам ну прямо глупый вопрос. Нашел я в инете архив с требуемой версией autoconf. Скачал его wget. А как ее установить из этого архива (в архиве я так понимаю исходники. их компилить надо?)?

#251035
"vitus153" написал:
Ну можно я задам ну прямо глупый вопрос. Нашел я в инете архив с требуемой версией autoconf. Скачал его wget. А как ее установить из этого архива (в архиве я так понимаю исходники. их компилить надо?)?

да, это скорей всего исходники. общая схема ./configure && make && make install
но в пакетных дистрах последнее заменяется на checkinstall - собирает пакет и устанавливает его.

#251046

Библиотеку поставил. Поменял make файл. Ту точку прошел, но вылезли новые ошибки

text
libtool: Version mismatch error.  This is libtool 2.2.6b Debian-2.2.6b-2ubuntu3, but the
libtool: definition of this LT_INIT comes from an older release.
libtool: You should recreate aclocal.m4 with macros from libtool 2.2.6b Debian-2.2.6b-2ubuntu3
libtool: and run autoconf again.
make[1]: *** [ext/date/php_date.lo] Ошибка 63

Сейчас пытаюсь пофиксить их

Пока безуспешно! Насколько я понимаю, библиотека сильно свежая?!

#251147

Кажется получилось решить таким образом:
вместо

text
(cd $(@D); \
    aclocal; \
    libtoolize --force; \
    autoheader; \
    autoconf; \
    )

поставил

text
(cd $(@D); \
    aclocal; \
    libtoolize --force; \
    autoheader; \
    )

НЕТ, не сработало. Блин, сразу выдало другую ошибку, что-то там связанное с библиотекой постгресикуэля, я их в php.mk убрал, теперь опять тожа самая ошибка вернулась

text
make php-ipk
rm -f /root/optware/oleg/builds/php/.built
make -C /root/optware/oleg/builds/php
make[1]: Вход в каталог `/root/optware/oleg/builds/php'
/bin/sh /root/optware/oleg/builds/php/libtool --silent --preserve-dup-deps --mode=compile /root/optware/oleg/toolchain/mipsel-linux-uclibc/gcc-4.1.1-uclibc-0.9.28/bin/mipsel-linux-uclibc-gcc -Iext/date/lib -Iext/date/ -I/root/optware/oleg/builds/php/ext/date/ -DPHP_ATOM_INC -I/root/optware/oleg/builds/php/include -I/root/optware/oleg/builds/php/main -I/root/optware/oleg/builds/php -I/root/optware/oleg/builds/php/ext/date/lib -I/root/optware/oleg/staging/opt/include/libxml2 -I/root/optware/oleg/staging/opt/include -I/root/optware/oleg/staging/opt/include/freetype2 -I/root/optware/oleg/staging/opt/include/imap -I/root/optware/oleg/builds/php/ext/mbstring/oniguruma -I/root/optware/oleg/builds/php/ext/mbstring/libmbfl -I/root/optware/oleg/builds/php/ext/mbstring/libmbfl/mbfl -I/root/optware/oleg/staging/opt/include/mysql -I/root/optware/oleg/builds/php/TSRM -I/root/optware/oleg/builds/php/Zend  -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 -D_XPG_IV  -I/usr/include -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   -c /root/optware/oleg/builds/php/ext/date/php_date.c -o ext/date/php_date.lo 
/root/optware/oleg/builds/php/libtool: 467: CDPATH: not found
/root/optware/oleg/builds/php/libtool: 467: CDPATH: not found
/root/optware/oleg/builds/php/libtool: 1175: func_opt_split: not found
libtool: Version mismatch error.  This is libtool 2.2.6b Debian-2.2.6b-2ubuntu3, but the
libtool: definition of this LT_INIT comes from an older release.
libtool: You should recreate aclocal.m4 with macros from libtool 2.2.6b Debian-2.2.6b-2ubuntu3
libtool: and run autoconf again.
make[1]: *** [ext/date/php_date.lo] Ошибка 63
make[1]: Выход из каталога `/root/optware/oleg/builds/php'
make: *** [/root/optware/oleg/builds/php/.built] Ошибка 2
#251210

на данный момент проблема в следующем:

text
In file included from /usr/include/sys/socket.h:40,
                 from /root/optware/oleg/builds/php/main/streams/php_stream_transport.h:22,
                 from /root/optware/oleg/builds/php/main/php_streams.h:437,
                 from /root/optware/oleg/builds/php/main/php.h:399,
                 from /root/optware/oleg/builds/php/ext/standard/basic_functions.c:22:
/usr/include/bits/socket.h:431: предупреждение: декларация ‘struct mmsghdr’ внутри списка параметров
/usr/include/bits/socket.h:431: предупреждение: область действия типа - только данная декларация или определение, что может не соответствовать вашим намерениям
{standard input}: Assembler messages:
{standard input}:2573: Error: unrecognized opcode `rorw $8,$2'
{standard input}:2573: Error: unrecognized opcode `rorl $16,$2'
{standard input}:2573: Error: unrecognized opcode `rorw $8,$2'
{standard input}:2828: Error: unrecognized opcode `rorw $8,$2'
{standard input}:2828: Error: unrecognized opcode `rorl $16,$2'
{standard input}:2828: Error: unrecognized opcode `rorw $8,$2'
{standard input}:9011: Error: unrecognized opcode `rorw $8,$4'
{standard input}:9307: Error: unrecognized opcode `rorw $8,$2'
make[1]: *** [ext/standard/basic_functions.lo] Ошибка 1
make[1]: Выход из каталога `/root/optware/oleg/builds/php'
make: *** [/root/optware/oleg/builds/php/.built] Ошибка 2
#251275
"vitus153" написал:
Кажется получилось решить таким образом:вместо

не самая лучшая идея... autoconf регенерирует ./configure и применяет эффект патчей.

"vitus153" написал:
{standard input}: Assembler messages:
{standard input}:2573: Error: unrecognized opcode `rorw $8,$2'
{standard input}:2573: Error: unrecognized opcode `rorl $16,$2'
{standard input}:2573: Error: unrecognized opcode `rorw $8,$2'

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

м... дальше, пожалуй, только пинать остаётся... и разные комбинации пробовать...
на всякий случай, не забываете периодически удалять oleg/builds/php после неудач?

#251313
"Fat-Zer" написал:
дальше, пожалуй, только пинать остаётся... и разные комбинации пробовать..

значит мучения мои не закончились :( буду продолжать

"Fat-Zer" написал:
не забываете периодически удалять oleg/builds/php после неудач

регулярно удаляю

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