【问题标题】:How to generate a single LLVM IR from multiple sources如何从多个来源生成单个 LLVM IR
【发布时间】:2014-08-20 17:23:49
【问题描述】:

将 .c 文件编译为单个 LLVM IR,并在编译期间链接多个库。

这里有一个 gcc 的例子:

gcc -c -Wall -g3 -DVERSION=\"1.1.2\" ssl_proxy.c -o ssl_proxy.o
gcc -o ssl_proxy ssl_proxy.o  -lssl -lcrypto

现在,我想将ssl_proxy.c 编译为ssl_proxy.ll,仅仅使用llvm-gcc -S -emit-llvm 是行不通的,因为它不会让我链接-lssl -lcrypto 库。

通过这个例子,我希望人们可以解释更多关于使用llvm-gcc(不是clang)编译的细节,以便所有访问者都可以从中学习并知道如何将复杂的多个源编译成一个LLVM IR。

【问题讨论】:

    标签: c gcc clang llvm llvm-gcc


    【解决方案1】:

    将源文件编译到 LLVM IR 中不执行链接,因此它不需要任何库 - 它只需要标头。

    【讨论】:

    • 那么在这种情况下我应该如何执行与-lssl -lcrypto 的链接以用于IR?
    • @cache 最好的方法是让 clang 进行链接 - 将您的 IR 文件作为输入之一。如果您安装LLVM's plugin for it,您也可以直接使用黄金链接器进行链接,这样您还可以享受一些链接时间优化。
    • 谢谢!但正如我所说,如果您可以提供更多细节并关注我提供的示例。这可能是人们学习的最佳方式。
    • @ Oak 那么您能否给出详细的命令以将上述内容放入 IR 并正确链接这些标志?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-26
    • 1970-01-01
    • 2012-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多