¿Qué es la opción -ffreestanding en gcc?

1 minuto de lectura

avatar de usuario
RetoñoPro

Qué es ffreestanding en CCG? Para qué se usa esto ? Me encontré con lo siguiente:

gcc -ffreestanding -m32 -c kernel.c -o kernel.o

y no entiendo, qué significa exactamente.

  • Relacionado: stackoverflow.com/questions/2681304/…

    – Ciro Santilli Путлер Капут 六四事

    29 de abril de 2015 a las 13:21

avatar de usuario
Rai diurno

A freestanding el entorno es uno en el que la biblioteca estándar puede no existir, y el inicio del programa puede no estar necesariamente en “principal”. La opción -ffreestanding dirige al compilador a no suponga que las funciones estándar tienen su definición habitual.

De forma predeterminada, GCC actuará como compilador de una implementación alojada, definiendo __STDC_HOSTED__ como 1 y suponiendo que cuando se utilizan los nombres de funciones ISO C, tienen la semántica definida en el estándar. Para que actúe como una implementación independiente conforme para un entorno independiente, utilice la opción -ffreestanding. A continuación, definirá __STDC_HOSTED__ a 0, y no hacer suposiciones sobre los significados de los nombres de funciones de la biblioteca estándar.

Para más información, Esta enlace puede ayudar.

  • @Dayalrai yo usé -ffreestanding opción con arm-non-eabi-gcc : arm-non-eabi-gcc -g -O0 -ffreestanding ......pero todavía obtengo el símbolo principal llamando nm mando U main que me genera un error de depuración con gdb : Function "main" not defined. ¿Cómo puedo evitar generar esto? mainsímbolo

    usuario2948075

    28 de abril de 2015 a las 9:01


  • Típicamente, -ffreestanding se utiliza para compilar núcleos. Además, rara vez se usa para compilar aplicaciones que interactuarían directamente con el kernel sin hacer uso de una biblioteca. Las aplicaciones normales no usarían -ffreestanding.

    – Christian Hujer

    06/10/2015 a las 10:56

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad