首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用LLVM在MacOS上建立ELF?

如何使用LLVM在MacOS上建立ELF?
EN

Stack Overflow用户
提问于 2020-02-23 12:47:52
回答 1查看 2K关注 0票数 3

我正在尝试使用LLVM (来自Homebrew)构建ELF文件,但我无法理解如何链接它。

我的档案:

multiboot2.h

代码语言:javascript
复制
struct multiboot2_header_t {
// Stub
} multiboot2_header __attribute__((section(".multiboot")));

kernel.c

代码语言:javascript
复制
#include "multiboot2.h"

void _start() {
// Stub
}

linker.ld

代码语言:javascript
复制
ENTRY(_start)

SECTIONS
{
    .text: {
    /* link the multiboot struct here */
    . = ALIGN(8);
    KEEP(*(.multiboot))
    /* place all of your code afterwards */
    *(.text)
    }
}

我可以通过命令将其编译成对象文件clang -c -o kernel.o kernel.c --target x86_64-none-gnu kernel.o,但是我无法获得如何使用链接器脚本链接这个对象文件。

P.S.以前从未与LLVM链接器直接合作过,只有GNU GCC开发简单的Linux应用程序。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-12-25 04:31:00

代码语言:javascript
复制
clang --target=aarch64-unknown-linux-gnu -c file.c

Clang将看到您的目标是Linux,并发出一个ELF文件。

代码语言:javascript
复制
% file file.o
file.o: ELF 64-bit LSB relocatable, ARM aarch64, version 1 (SYSV), not stripped

然后,您会想要使用ld.lld,您可以从Homebrew中获得它。顺便说一下,链接器脚本对ELF ld.lld的支持是相当不错的。但是,对Mach-O ld64.non的链接器脚本支持不存在。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60362329

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档