首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >大型C项目的LLVM IR

大型C项目的LLVM IR
EN

Stack Overflow用户
提问于 2022-04-09 03:04:54
回答 1查看 311关注 0票数 0

我对LLVM、clang等很陌生,我的主要需求是将C代码转换为LLVM IR (.ll),然后将其解析为类似程序集的语言。为此,到目前为止,我使用的是小长度c码(单个文件),并将这些代码转换为我使用的LLVM IR -

代码语言:javascript
运行
复制
$ clang -emit-llvm -S multiply.c -o multiply.ll

为了使用大型C项目进行这种转换,我尝试了gllvm - https://github.com/SRI-CSL/gllvm,它非常简单和方便,但是我面临的问题是it - https://github.com/PLSysSec/sys/issues/16

这基本上是llvm回购中的一个bug,本质上是要求我提取提交,它有修复并构建它。我尽量避免这样做(这是一个更好的方法吗?)

因此,我转向了另一种使用黄金链接器- http://gbalats.github.io/2015/12/10/compiling-autotooled-projects-to-LLVM-bitcode.html的解决方案。

我现在被困在使用这个黄金插件来获取.bc或.ll文件--我想使用这个黄金插件将一个大型C项目转换为.ll或.bc文件--但是这些步骤只展示了如何使用链接器来优化可执行文件。是否有任何命令行选项仅将其转换为.bc文件?

任何帮助都将不胜感激。

EN

回答 1

Stack Overflow用户

发布于 2022-04-16 20:25:37

llvm-link工具将多个.bc文件组合成一个.bc。它根本不支持本机对象文件,也不能很好地处理普通链接器标志(它不假装为ld)。

如果您确实希望由于系统上的本机库而更改llvm,那么对于llvm的黄金插件也支持emit-llvm标志。当与黄金链接时,运行与-Wl,-plugin-opt=emit-llvm的clang或gcc链接。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71804961

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档