como desabilitar programas de teste em compilação cruzada simplista

como desabilitar programas de teste em compilação cruzada simplista

Eu tenho os seguintes erros ao tentar fazer a compilação cruzada do glib, com os seguintes parâmetros de configuração:

./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

Existe uma maneira de desabilitar esses testes para que meu processo de compilação cruzada possa passar?

Responder1

A prática padrão neste tipo de situação é usar umArquivo padrão do site Autoconfcontendo os valores apropriados para os testes que configuredeseja executar.

Neste caso específico,configureestá tentando determinar em que direção a pilha cresce:

    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; }

Portanto, você compilaria esse código, executaria-o na plataforma de destino e examinaria seu código de saída ( echo $?). Crie um arquivo padrão do site para sua arquitetura de destino, por exemplo config.arm-hisiv400-linux, e adicione uma linha com

glib_cv_stack_grows=yes

(se o código de saída acima for 0), ou

glib_cv_stack_grows=no

(se o código de saída for 1).

Em seguida, execute configureapontando CONFIG_SITEpara o caminho completo do arquivo padrão do site que você acabou de criar:

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

configuredeve usar o valor do arquivo padrão do site, ignorando o teste da pilha. Provavelmente irá falhar no próximo teste que precisa executar um programa compilado para o alvo, mas você pode corrigir isso da mesma forma, adicionando mais entradas ao arquivo padrão do site (desde que configure.acuse AC_CACHE_VALaround AC_TRY_RUN).

informação relacionada