将 xo65 对象文件与 ELF 对象和 LLVM IR 文件链接
Linking xo65 object files with ELF objects and LLVM IR files
我有一堆 LLVM IR / BC 文件,目前,我正在使用 clang
:
使用 LTO 编译为本机代码
llvm-mos/bin/clang
--config llvm-mos-sdk/build/commodore/64.cfg \
-O2 \
-o _build/chip8.prg \
_build/dir.c.ll \
_build/interrupt.c.ll \
_build/main.c.ll \
_build/dir.s.o \
_build/panic.ll.bc \
rs/target/release/deps/chip8_engine-2a1bf4bc9333b677.bc \
rs/target/release/deps/chip8_c64-a95cc9a5a3e99697.bc
在这里,我正在使用三种输入文件:
.ll
文件是 LLVM IR 文件
.bc
文件是 LLVM BC 文件
.o
文件是一个 ELF 文件(file
将其报告为 ELF 32-bit LSB relocatable, *unknown arch 0x1966* version 1 (SYSV), not stripped
)
这行得通,但现在我想添加一些用 CC65 编译的 xo65 目标文件。我不能只将它们添加到 clang
调用中,因为 ld.lld
猜测文件的含义错误:
ld.lld: error: _build/native/readdir.c.o:30: unclosed quote
所以我的问题是,将这些文件链接在一起有哪些选择? 显而易见的解决方案是使用 clang
编译 readdir.c
,前述 CC65(以及 xo65 目标文件格式);不幸的是,这说起来容易做起来难,因为 readdir.c
导入了一整套低级平台特定的导入,这些导入是用与 LLVM 的汇编器不兼容的汇编语法编写的。
我在 LLVM-MOS 问题跟踪器中找到了 a relevant feature request ticket。截至 2021-09-13,此问题的答案是否定的:这是一个未解决的问题。
xo65 文件不是 ELF 格式。在撰写本文时,它们不能直接与 llvm-mos ELF 格式文件链接。这在原则上并非不可能;尚未在等式的两边创建对它的支持。
我有一堆 LLVM IR / BC 文件,目前,我正在使用 clang
:
llvm-mos/bin/clang
--config llvm-mos-sdk/build/commodore/64.cfg \
-O2 \
-o _build/chip8.prg \
_build/dir.c.ll \
_build/interrupt.c.ll \
_build/main.c.ll \
_build/dir.s.o \
_build/panic.ll.bc \
rs/target/release/deps/chip8_engine-2a1bf4bc9333b677.bc \
rs/target/release/deps/chip8_c64-a95cc9a5a3e99697.bc
在这里,我正在使用三种输入文件:
.ll
文件是 LLVM IR 文件.bc
文件是 LLVM BC 文件.o
文件是一个 ELF 文件(file
将其报告为ELF 32-bit LSB relocatable, *unknown arch 0x1966* version 1 (SYSV), not stripped
)
这行得通,但现在我想添加一些用 CC65 编译的 xo65 目标文件。我不能只将它们添加到 clang
调用中,因为 ld.lld
猜测文件的含义错误:
ld.lld: error: _build/native/readdir.c.o:30: unclosed quote
所以我的问题是,将这些文件链接在一起有哪些选择? 显而易见的解决方案是使用 clang
编译 readdir.c
,前述 CC65(以及 xo65 目标文件格式);不幸的是,这说起来容易做起来难,因为 readdir.c
导入了一整套低级平台特定的导入,这些导入是用与 LLVM 的汇编器不兼容的汇编语法编写的。
我在 LLVM-MOS 问题跟踪器中找到了 a relevant feature request ticket。截至 2021-09-13,此问题的答案是否定的:这是一个未解决的问题。
xo65 文件不是 ELF 格式。在撰写本文时,它们不能直接与 llvm-mos ELF 格式文件链接。这在原则上并非不可能;尚未在等式的两边创建对它的支持。