Я пытаюсь собрать общую библиотеку в Cygwin, используя кросс-компилятор i686-elf. Код очень прост:
int add(int a, int b) {
return a + b;
}
void _init() {
add(3, 4);
}
Я компилирую с помощью следующей команды:
i686-elf-gcc -fPIC -shared -nostdlib core.c -o libcore.so
Это должно быть создание общего объекта, верно? Но GCC выдает предупреждение о невозможности найти символ _start
, который является точкой входа для исполняемых файлов, а не общих объектов. Кроме того, readelf
говорит следующее:
$ 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)
...
Что здесь не так?