Я пытаюсь создать ELF-файл, используя LLVM (из Homebrew ), но не могу понять, как его связать.
Мои файлы:
multiboot2.h :
struct multiboot2_header_t {
// Stub
} multiboot2_header __attribute__((section(".multiboot")));
ядро. c:
#include "multiboot2.h"
void _start() {
// Stub
}
linker.ld :
ENTRY(_start)
SECTIONS
{
.text: {
/* link the multiboot struct here */
. = ALIGN(8);
KEEP(*(.multiboot))
/* place all of your code afterwards */
*(.text)
}
}
Я могу скомпилировать его в объектный файл kernel.o по команде clang -c -o kernel.o kernel.c --target x86_64-none-gnu
, но я не могу понять, как связать этот объектный файл, используя мой скрипт компоновщика.
PS Раньше я никогда не работал с LLVM и линкером напрямую, только GNU G CC сборка простая Linux apps.