c++ - fuente - El programa de compilación para 32 bits en el sistema operativo Linux de 64 bits causa un error fatal
compilar y ejecutar c en linux gcc (4)
Utilizando
gcc -m32 myprog.c
debería compilar en la versión de 32 bits el archivo myprog.c
.
Lamentablemente me sale este error:
In file included from /usr/include/stdio.h:27:0,
from myprog.c:1:
/usr/include/features.h:374:25: fatal error: sys/cdefs.h: No such file or directory
#include <sys/cdefs.h>
¿Cómo podría arreglar esto?
Si no uso -m32
funciona pero usa instrucciones de 64 bits.
Me encontré con este mismo problema. cuando intentaba crear archivos de 32 bits, mientras estaba en la versión de Ubuntu de 64 bits.
puedes construir cambiando tu versión de lib a 64 bit en netbeans (-> propiedades del proyecto -> compilador C -> opciones adicionales ) configuradas para
-shared -m64
Necesita soporte gcc multilib. Instala el paquete gcc-multilib
. P.ej:
sudo apt-get install gcc-multilib
Para compilar los binarios de 32 bits en la versión de Linux de 64 bits, debe instalar el paquete de desarrollo libx32gcc
y la biblioteca GNU C de 32 bits.
prueba esto
sudo apt-get install libx32gcc-4.8-dev
y
sudo apt-get install libc6-dev-i386
Para solucionar el problema, primero debemos saber qué paquete proporcionará el archivo sys / cdefs.h
En el sistema basado en CentOs / RHEL puedes encontrarlo ejecutando debajo del comando
yum provides ''*sys/cdefs.h''
Del mismo modo, en los sistemas Debian / Ubuntu puedes encontrarlo ejecutando
apt-file search ''sys/cdefs.h''
Nota: Si el paquete apt-file no está presente en el sistema, instálelo con el comando
apt-get install apt-file
Ambos comandos anteriores escanean la respectiva base de datos de sistemas de administración de paquetes, es decir, RPM / Apt, y le dice el nombre del paquete que suministra el archivo que termina con "sys / cdefs.h".
Instale el paquete apropiado de los paquetes enumerados por los comandos.
Me gusta
En CentOs / RHEL :
yum install glibc-headers
En Debian / Ubuntu
apt-get install libc6-dev
Este enfoque no solo es útil para este problema en particular, sino también para cualquier problema similar que informe que algún archivo requerido está siendo provisto por algún paquete que no está presente.