/ / Acerca de -ffunction-secciones -fdata-secciones y --gc-secciones opciones - gcc, x86, arm

Acerca de las opciones de -función -fdata-secciones y --gc-secciones - gcc, x86, arm

En mi proyecto ARM, utilizo lo siguiente para construir el binario de la aplicación sin sistema operativo:

arm-linux-gcc -Os -ffunction-sections -fdata-sections -o boot.o boot.S
arm-linux-gcc -Os -ffunction-sections -fdata-sections -o main.o main.c
arm-linux-ld -T link.lds --gc-sections -o target.bin boot.o main.o

Esto funciona bien. Porque si elimino las opciones "-ffunction-secciones", "-fdata-secciones" y "--gc-secciones", el tamaño del archivo target.bin aumentará casi el doble.

Pero en la plataforma x86, el mismo método, encontré que: Si no uso esas opciones de gcc e ld, la salida es normal, pero el archivo de salida será de 0 bytes si uso esas opciones como plataforma de brazo.

Respuestas

2 para la respuesta № 1

-Os -ffunction-sections -fdata-sections y --gc-sections debería funcionar en el sistema x86. ¿Estás seguro de que tu programa y tu script de enlazador son adecuados para x86? Como su programa está diseñado para ARM sin formato, es probable que no tenga puntos de entrada para su sistema operativo x86, y si no hay un punto de entrada, todo es basura --gc-sections opción.

Por cierto, su "pregunta" en realidad no incluye ninguna pregunta.