Tengo los siguientes errores al intentar realizar una compilación cruzada de simplismo, con los siguientes parámetros de configuración:
./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
¿Hay alguna manera de deshabilitar estas pruebas para que mi proceso de compilación cruzada pueda realizarse?
Respuesta1
La práctica estándar en este tipo de situación es utilizar unArchivo predeterminado del sitio Autoconfque contiene los valores apropiados para las pruebas que configure
desea ejecutar.
En este caso particular,configure
está tratando de determinar en qué dirección crece la pila:
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; }
Por lo tanto, compilaría ese código de forma cruzada, lo ejecutaría en su plataforma de destino y examinaría su código de salida ( echo $?
). Cree un archivo predeterminado del sitio para su arquitectura de destino, por ejemplo config.arm-hisiv400-linux
, y agregue una línea con
glib_cv_stack_grows=yes
(si el código de salida anterior era 0), o
glib_cv_stack_grows=no
(si el código de salida era 1).
Luego ejecute configure
apuntando CONFIG_SITE
a la ruta completa del archivo predeterminado del sitio que acaba de crear:
CONFIG_SITE=/path/to/config.arm-hisiv400-linux ./configure --prefix=$HOME --host=arm-hisiv400-linux
configure
debe usar el valor del archivo predeterminado del sitio, omitiendo la prueba de la pila. Probablemente fallará en la próxima prueba que necesite ejecutar un programa compilado para el objetivo, pero puede solucionarlo de la misma manera, agregando más entradas al archivo predeterminado del sitio (siempre que configure.ac
use AC_CACHE_VAL
alrededor de AC_TRY_RUN
).