GNU/Linux >> Tutoriales Linux >  >> Linux

Cómo compilar un binario de 32 bits en una máquina Linux de 64 bits con gcc/cmake

export CFLAGS=-m32

$ gcc test.c -o testc
$ file testc
testc: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.9, not stripped
$ ldd testc 
    linux-vdso.so.1 =>  (0x00007fff227ff000)
    libc.so.6 => /lib64/libc.so.6 (0x000000391f000000)
    /lib64/ld-linux-x86-64.so.2 (0x000000391ec00000)
$ gcc -m32 test.c -o testc
$ file testc
testc: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.9, not stripped
$ ldd testc
    linux-gate.so.1 =>  (0x009aa000)
    libc.so.6 => /lib/libc.so.6 (0x00780000)
    /lib/ld-linux.so.2 (0x0075b000)

En resumen:use el -m32 marca para compilar un binario de 32 bits.

Además, asegúrese de tener instaladas las versiones de 32 bits de todas las bibliotecas requeridas (en mi caso, todo lo que necesitaba en Fedora era glibc-devel.i386)


Linux
  1. Cómo uso Vagrant con libvirt

  2. Cómo cifrar archivos con gocryptfs en Linux

  3. Soporte de vida de 32 bits:compilación cruzada con GCC

  4. Cómo compilar código de Windows Visual C++ en Linux

  5. ¿Cómo determinar si un archivo binario de Linux es de 32 bits o de 64 bits?

Cómo saber si tiene una computadora de 32 o 64 bits en Linux y Windows

Cómo configurar un cortafuegos con GUFW en Linux

Cómo saber si la versión de Linux es de 32 bits o de 64 bits

¿Cómo verificar que el sistema Linux sea de 32 bits o de 64 bits?

Cómo compilar la aplicación .NET Core para Linux en una máquina con Windows

¿Cómo ejecutar una versión nueva de AIX en una máquina virtual con un host Linux?