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.
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.
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? main
sí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
Relacionado: stackoverflow.com/questions/2681304/…
– Ciro Santilli Путлер Капут 六四事
29 de abril de 2015 a las 13:21