【发布时间】:2018-01-21 13:13:37
【问题描述】:
我正在创建一个 LLVM 通道,它会创建一些对函数的调用。
现在,我可以使用包含要调用的函数的外部文件 (functions.c) 来执行此操作。
结构:
- functions.c
- user.c
- build/skeleton/libSkeletonPass.so ...
这是我现在正在做的过程:
clang -S -emit-llvm *.c // compile
llvm-link -S -v -o single.ll *.ll // link to single file
opt -load build/skeleton/libSkeletonPass.so -skeletonpass single.ll -o optimised.ll // run the pass
llc optimised.ll // create an executable
clang optimised.s
现在,我想用 gRPC 方法更改这些 functions.c 文件以调用 Bigtable 上的方法。我查看了一些示例(Hello World、Route Guide),发现编译和链接是通过 makefile 完成的。
已编辑:
我正在使用Bigtable example 代码,只想调整现有的 CMakeLists.txt 以执行上述命令。换句话说,我想编译和链接“所有 Google 代码”并生成一个可以通过 LLVM 运行的单个 .ll 文件。
我设置了
export CXX=/usr/bin/clang++
并添加了
set(CMAKE_CXX_OUTPUT_EXTENSION ".bc")
set(CMAKE_CXX_FLAGS "-S -emit-llvm")
CMakeLists.txt 的选项,但它没有生成 .bc 文件。
【问题讨论】:
-
您是否考虑咨询GNU make documentation?编译器和链接器标志的使用不会与您在命令行中所做的不同。
-
我添加了 set(CMAKE_CXX_OUTPUT_EXTENSION ".bc") set(CMAKE_CXX_FLAGS "-S -emit-llvm") 选项,但我没有生成 .bc 文件
-
那么您目前正在使用 CMake 进行此操作吗?你为什么在你的问题中没有提到这一点?请显示与获得帮助相关的所有内容!了解你的工具人!
-
添加cmake 标签并显示您当前的
CMakeList.txt也会很有帮助。 -
不!没有闲聊....
标签: makefile compilation cmake llvm google-cloud-bigtable