TransWikia.com

Error al enlazar manualmente: cannot perform PE operations on non PE output file

Stack Overflow en español Asked by ByRuss X on November 26, 2020

Últimamente estoy construyendo un sistema operativo en ensamblador (bootloader) y C (kernel). Acabo de terminar de escribir el kernel para pasar a modo protegido de 32 bits, y he decidido ponerme a hacer pruebas con C para ver como se compilaba en ensamblador.

Mientras hacia estas pruebas he usado las siguientes herramientas:

  • Sistema operativo: Windows 7, Arquitectura: x86
  • MinGW: GCC para compilar y LD para ‘linkear’ el código objeto
  • NASM: NDISASM para obtener el código fuente en ensamblador

Lo primero que hice fue escribir el código fuente en C (basic.c):

int main(){
    return 0xbaba;
}

Después compilé con gcc -ffreestanding -c basic.c -o basic.o, y obtuve el archivo basic.o con código objeto.

Después, intenté usar el siguiente comando para ‘linkear’ el código fuente:

ld -o basic.bin -Ttext 0x0 --oformat binary basic.o

Pero obtuve el siguiente error:

ld: cannot perform PE operations on non PE output file 'basic.bin'.

¿Alguien sabe a qué se debe?

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP