我有一个C代码(例如名为a.c),它从stdio.h / curses.h中调用我们printf
,textcolor
和gotoxy
这样的函数。用于a.c的LLVM-IR将仅声明这些函数并显示这些函数已被调用,这意味着它不具有用于在a.ll中实现这些函数的详细IR。有没有什么方法可以访问这些IR或将所有实现(这些函数调用的a.c + IR的IR)放在一个.ll文件中?我不太了解LLVM,所以如果我犯了一些概念错误,请告诉我。
答案 0 :(得分:7)
您无法从 程序中获取此内容,因为它不包含这些功能。即使是静态链接,可执行文件也很可能不会,因为libc(其中printf
和其他C库函数来自)作为目标文件存在于您的计算机上,而不是LLVM IR。
所能做的是使用LLVM编译其中一个C库(尝试像ulibc
或newlib
这样的小而简单的东西)。然后你可以从中发出LLVM IR。 FWIW,Chrome便携式原生客户端项目执行此操作(使用newlib
) - 您可以使用directions on this page构建它并自行复制这些步骤。