es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

meson 0.56.1 no logra establecer correctamente la máquina anfitriona.

Estoy tratando de construir bibliotecas de Mesa de 32 bits a partir del código fuente, utilizando el paquete fuente de Debian 20.3.5-1 de Mesa. He instalado el meson 0.56.1 de los backports de Debian Buster porque Mesa 20.3.5 requiere un meson más reciente que el nativo 0.49.2 de Buster.

Entiendo que debo especificar un --cross-file para construir bibliotecas de 32 bits en un sistema de 64 bits. Este es el contenido de ese archivo:

[host_machine]
system = 'linux'
cpu_family = 'x86'
cpu = 'i386'
endian = 'little'

[properties]
c_args = ['-m32']
cpp_args = ['-m32']

[binaries]
c = 'gcc'
cpp = 'g++'
ar = 'ar'
strip = 'strip'
pkgconfig = 'pkg-config'
windres = 'windres'

Estoy especificando [host_machine] porque estoy construyendo (build_machine) en x86_64 pero necesito enlazar las bibliotecas resultantes (host_machine) con binarios existentes de 32 bits.

He borrado y recreado un nuevo directorio build vacío.

Invoco a meson con una línea de comando como esta:

meson --cross-file i386.cross [... opciones específicas de mesa ...] build .

Salida parcial:

El sistema de construcción Meson
Versión: 0.56.1
Directorio fuente: /tmp/mesa-20.3.5
Directorio de construcción: /tmp/mesa-20.3.5/build
Tipo de construcción: construcción cruzada
Programa python encontrado: SÍ (/usr/bin/python)
Nombre del proyecto: mesa
Versión del proyecto: 20.3.5
Compilador C para la máquina host: gcc (gcc 8.3.0 "gcc (Debian 8.3.0-6) 8.3.0")
Enlazador C para la máquina host: gcc ld.bfd 2.31.1
Compilador C++ para la máquina host: g++ (gcc 8.3.0 "g++ (Debian 8.3.0-6) 8.3.0")
Enlazador C++ para la máquina host: g++ ld.bfd 2.31.1
Compilador C para la máquina de construcción: cc (gcc 8.3.0 "cc (Debian 8.3.0-6) 8.3.0")
Enlazador C para la máquina de construcción: cc ld.bfd 2.31.1
Compilador C++ para la máquina de construcción: c++ (gcc 8.3.0 "c++ (Debian 8.3.0-6) 8.3.0")
Enlazador C++ para la máquina de construcción: c++ ld.bfd 2.31.1
Familia de CPU de la máquina de construcción: x86_64
CPU de la máquina de construcción: x86_64
Familia de CPU de la máquina host: x86_64
CPU de la máquina host: x86_64
Familia de CPU de la máquina objetivo: x86
CPU de la máquina objetivo: i386
Programa python3 encontrado: SÍ (/usr/bin/python3)

La “Máquina host” simplemente está equivocada. Necesito bibliotecas de 32 bits. ¿Cómo puedo insistir en esto?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para especificar la arquitectura de la máquina de host en una compilación de 32 bits, puedes agregar la opción --native-file a la instrucción meson y proporcionar un archivo .txt que contenga la configuración para la arquitectura de 32 bits. El contenido del archivo podría verse así:

    [host_machine]
    system = 'linux'
    cpu_family = 'x86'
    cpu = 'i686'
    endian = 'little'
    
    [properties]
    c_args = ['-m32']
    cpp_args = ['-m32']
    
    [binaries]
    c = 'gcc'
    cpp = 'g++'
    ar = 'ar'
    strip = 'strip'
    pkgconfig = 'pkg-config'
    windres = 'windres'
    

    Luego, puedes modificar tu comando meson para incluir la opción --native-file y especificar el archivo correspondiente:

    meson --cross-file i386.cross --native-file i386.txt [... opciones específicas de Mesa ...] build .
    

    Esto asegurará que tu compilación meson para bibliotecas de 32 bits utilice la configuración correcta de la máquina de host.

Comments are closed.