我编写了一个简单的玩具语言编译器前端,它使用llvm-sys(LLVM 的C 库的 Rust 绑定)生成 LLVM IR 。然后我通过创建一个LLVMTargetMachine基于机器的目标三元组然后调用生成一个目标文件LLVMTargetMachineEmitToFile,它成功生成了一个可执行文件。但是,运行可执行文件会生成zsh: exec format error: ./a.out.
我发现我必须ld -lSystem ./a.out在生成可执行文件后运行才能使其工作。我应该如何在代码中自动调用链接器?
目前在 macOS Catalina 上使用 LLVM 9.0。