lld 未定义符号:mainCRTStartup

J.D*_*Doe 5 llvm-clang lld

我的 cpp 代码:

int main(int argc, char** argv) {}
Run Code Online (Sandbox Code Playgroud)

我使用以下命令来编译和链接它:

// I want to read the result ir
clang -S -emit-llvm main.cpp 

// I want to compile directly from ir
llc -filetype=obj main.ll
lld -flavor link main.obj // <root>: undefined symbol: mainCRTStartup Link failed
Run Code Online (Sandbox Code Playgroud)

我错过了什么?

小智 2

mainCRTStartup 是 CRT 定义的函数(clang 可能在第一步中隐式使用它,并生成一个以 mainCRTStartup 作为入口点的 IR 文件)

尝试在第一步中将 -nostdlib 传递给 clang

但这意味着您将无法使用标准库函数

如果您想使用 CRT 函数但与 lld 链接,则需要链接到本机库