Estoy intentando crear una biblioteca compartida en Cygwin usando un compilador cruzado i686-elf. El código es muy simple:GCC genera un archivo ELF ejecutable cuando quiero una biblioteca compartida
int add(int a, int b) {
return a + b;
}
void _init() {
add(3, 4);
}
Estoy compilando con el siguiente comando:
i686-elf-gcc -fPIC -shared -nostdlib core.c -o libcore.so
Esto debería producir un objeto compartido, ¿verdad? Pero GCC emite una advertencia acerca de no poder encontrar el símbolo _start
, que es el punto de entrada para los archivos ejecutables, no para los objetos compartidos. Por otra parte, readelf
dice lo siguiente:
$ readelf -a libcore.so
ELF Header:
Magic: 7f 45 4c 46 01 01 01 00 00 00 00 00 00 00 00 00
...
Type: EXEC (Executable file)
...
lo que va mal aquí?
Eso funcionó muy bien, gracias. Para responder a su pregunta, estoy trabajando en un gestor de arranque que carga módulos ELF reubicables. –