При загрузке программного обеспечения с открытым исходным кодом из Интернета (в данном случае: PHP 5.5.5) они часто поставляются с "сценарием" Automake (если я могу назвать его сценарием) для сборки из исходного кода.
Сейчас я пытаюсь выполнить кросс-компиляцию для другой архитектуры, но каждый раз, когда я указываю другой ./configure --switch, я получаю другую ошибку. Как правило, эта ошибка является коротким неописательным сообщением, которое абсолютно ничего не значит ни для кого, кроме разработчика.
проверка "является ли структура flock linux-упорядоченной" ... configure: error: в `/usr/src/hd/lib/php-5.5.5 ': configure: error: не удается запустить тестовую программу во время кросс-компиляции
С последующим:
Смотрите `config.log 'для более подробной информации
Итак, я набираю:
cat ./config.log
Но на самом деле, единственное необычное, что он мне показывает, это:
настроить: выход 1
-
Так что же дает? Как я могу сказать, в чем проблема?
К вашему сведению, мои параметры конфигурации выглядят примерно так:
./configure --prefix="`pwd`/install/" \
--build="i386-pc-linux-gnu" \
--host="mips-linux-gnu" \
--target="mips-linux-gnu" \
--with-libxml-dir="/usr/src/hd/lib/libxml2-2.7.8/install/" \
--enable-soap \
CC="mips-linux-gnu-gcc" \
CFLAGS="-O2 -EL -march=74kf" \
CPP="mips-linux-gnu-cpp" \
CPPFLAGS="-I$CROSS_ROOTFS/include" \
CXX="mips-linux-gnu-g++" \
CXXFLAGS="-O2 -EL -march=74kf" \
CXXCPP="mips-linux-gnu-cpp" \
AR="mips-linux-gnu-ar" \
RANLIB="mips-linux-gnu-ranlib" \
AS="mips-linux-gnu-as" \
NM="mips-linux-gnu-nm" \
LD="mips-linux-gnu-ld" \
LDFLAGS="-L$CROSS_ROOTFS/lib" \
ADDR2LINE="mips-linux-gnu-addr2line"
Как вы, возможно, не знаете, я использую набор инструментов CodeSourcery для кросс-компиляции mips. Я знаю, что мне не нужно указывать все переменные (например, RANLIB), но я не понимаю, как это может повредить.
ОБНОВИТЬ
Похоже, проблема заключается в одном (или нескольких) связанных расширениях, как указано здесь: http://php.net/manual/en/extensions.membership.php
Конфигурирование с помощью --disable-all работает. Но, очевидно, мне нужны хотя бы некоторые из этих расширений, чтобы сделать какую-то реальную работу.
Тем не менее, как я могу сказать, какой?
ОБНОВИТЬ
Я сузил проблему до расширения под названием OPcache, которое было включено по умолчанию (см .: http://us2.php.net/manual/en/opcache.installation.php). Он успешно скомпилирован после отключения этого, наряду с некоторыми другими расширениями, которые в любом случае не будут работать на моей целевой системе.
Тем не менее, это было совсем не очевидно для меня. То, что я сделал, это работал в обратном направлении от выходного журнала, отключая перечисленные расширения одно за другим, пока глупость не сработает.
Конечно, должен существовать лучший способ точно определить проблемы, подобные этим? Иначе, что, черт возьми, весь смысл этой бессмыслицы?