как отключить тестовые программы при кросс-компиляции glib

как отключить тестовые программы при кросс-компиляции glib

При попытке кросс-компиляции glib со следующими параметрами конфигурации возникают следующие ошибки:

./configure --prefix=$HOME --host=arm-hisiv400-linux

checking for growing stack pointer... configure: error: in `/home/aa/Hi3536_SDK_V2.0.4.0/glib-2.50.0':
configure: error: cannot run test program while cross compiling
See `config.log' for more details

Есть ли способ отключить эти тесты, чтобы мой процесс кросс-компиляции мог пройти?

решение1

Стандартной практикой в ​​подобных ситуациях является использованиеФайл по умолчанию для сайта Autoconfсодержащий соответствующие значения для тестов, которые configureнеобходимо запустить.

В этом конкретном случае,configureпытается определить, в каком направлении растет стек:

    volatile int *a = 0, *b = 0;
    void f (int i) { volatile int x = 5; if (i == 0) b = &x; else f (i - 1); }
    int main () { volatile int y = 7; a = &y; f (100); return b > a ? 0 : 1; }

Итак, вы кросс-компилируете этот код, запускаете его на целевой платформе и изучаете его код выхода ( echo $?). Создайте файл сайта по умолчанию для целевой архитектуры, например config.arm-hisiv400-linux, и добавьте строку с

glib_cv_stack_grows=yes

(если код выхода выше был 0), или

glib_cv_stack_grows=no

(если код выхода был 1).

Затем запустите configure, CONFIG_SITEуказав полный путь к файлу сайта по умолчанию, который вы только что создали:

CONFIG_SITE=/path/to/config.arm-hisiv400-linux ./configure --prefix=$HOME --host=arm-hisiv400-linux

configureследует использовать значение из файла сайта по умолчанию, пропуская тест для стека. Вероятно, он не пройдет следующий тест, который должен запустить программу, скомпилированную для цели, но вы можете исправить это тем же способом, добавив больше записей в файл сайта по умолчанию (при условии, что configure.acиспользуется AC_CACHE_VALоколо AC_TRY_RUN).

Связанный контент