como desabilitar programas de teste em compilação cruzada

7

Tenho os seguintes erros ao tentar compilar o 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 desativar esses testes para que meu processo de compilação cruzada possa ser concluído?

    
por emddev 02.11.2016 / 08:06

1 resposta

1

A prática padrão nesse tipo de situação é usar um Autoconf arquivo padrão do site contendo os valores apropriados para os testes que o configure deseja executar.

Neste caso específico, configure está tentando determinar em qual 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; }

Assim, você compila esse código, executa-o em sua plataforma de destino e examina 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 configure com CONFIG_SITE apontando para 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

configure deve usar o valor do arquivo padrão do site, ignorando o teste da pilha. Ele provavelmente falhará no próximo teste que precisa executar um programa compilado para o destino, mas você pode corrigir isso da mesma maneira, adicionando mais entradas ao arquivo padrão do site (contanto que configure.ac use AC_CACHE_VAL em torno de AC_TRY_RUN ).

    
por 02.11.2016 / 11:10