c - 如何从多个源生成单个 LLVM IR

标签 c gcc clang llvm llvm-gcc

将 .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。

最佳答案

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

关于c - 如何从多个源生成单个 LLVM IR,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25410867/

相关文章:

c - 检查数组中重复字符的程序

c - Gcc 中的大数加法结果(阿贝尔群)

ios - ld : -bundle and -bitcode_bundle cannot be used together

objective-c - 一个 unsigned unsigned long 的两倍总是一个 double 吗?

c++ - 在单个 makefile 目标中编译 C 和 CPP 源代码

c - C 代码中的飞思卡尔微 Controller 错误

c - gcc48(从 Homebrew 软件下载)找不到stdio.h

linux - sincos() 堆栈溢出问题,解决方案?

gcc - 在 GCC 中编译 SSE 内在函数会出错

c++ - 在 VS2015 中使用平台工具设置 "Microsoft CodeGen v140_clang_c2"进行编译时,包括 <functional> 和 <memory> header 会导致错误