LLVM与op& ld - 链接错误

时间:2018-04-23 18:49:07

标签: c llvm ld llvm-clang llc

我正在努力熟悉LLVM&为一个项目而奋斗,我会在那里进行不同的优化。因此,我不仅需要通过clang与LLVM进行交互,还要使用opt& LLC。现在我没有将一个非常基本的例子与C库的使用联系起来。

代码(main.c):

#include<stdio.h>

int main() {
    printf("hallo");
}

LLVM Flow&amp; ld作为链接器:

clang -c -emit-llvm main.c
opt -O3 main.bc -o optimized.bc
llc -march=x86-64 -filetype=obj optimized.bc -o prog.o
ld --verbose -static -lc prog.o -o prog --entry main

ld的错误输出:

...
attempt to open //usr/local/lib/x86_64-linux-gnu/libc.a failed
attempt to open //lib/x86_64-linux-gnu/libc.a failed
attempt to open //usr/lib/x86_64-linux-gnu/libc.a succeeded
attempt to open prog.o succeeded
prog.o
prog.o: In function `main':
optimized.bc:(.text+0xc): undefined reference to `printf'

我对此错误感到困惑:

  • 我正在使用-lc,它应该链接stdc库
  • ld的输出表明找到了libc
  • 为什么ld抱怨LLVM IR文件中的错误?

一个更加愚蠢的C程序链接,但给了我一个分段错误&amp;执行。

代码:

int main() {
    int a = 5;
}

这让我想知道我是否在做一些根本性的错误...

THX!

0 个答案:

没有答案