Makefile LLVM+;gRPC编译

Makefile LLVM+;gRPC编译,makefile,compilation,cmake,llvm,google-cloud-bigtable,Makefile,Compilation,Cmake,Llvm,Google Cloud Bigtable,我正在创建一个LLVM过程,它创建一些函数调用 现在,我可以用外部文件(functions.c)来实现这一点,其中包含要调用的函数 结构: 职能.c 用户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/skeleto

我正在创建一个LLVM过程,它创建一些函数调用

现在,我可以用外部文件(functions.c)来实现这一点,其中包含要调用的函数

结构:

  • 职能.c
  • 用户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上的方法。我查看了一些示例(,),发现编译和链接是通过makefile完成的

编辑:

我正在使用代码,只想调整现有的CMakeLists.txt来执行上述命令。换句话说,我想编译和链接“所有Google代码”,并生成一个.ll文件,我可以通过LLVM pass运行该文件

我设定

export CXX=/usr/bin/clang++ 
并补充说

set(CMAKE_CXX_OUTPUT_EXTENSION ".bc") 
set(CMAKE_CXX_FLAGS "-S -emit-llvm") 

CMakeLists.txt的选项,但它没有生成.bc文件。

我知道有两种选择:

  • 如果您正在使用Make文件并希望提取位码存档等,请使用

  • 如果您想使用CMake执行类似操作,请使用;您必须通过提供的调用调整/增加您的
    CMakeLists.txt
    (本回购协议中有示例)


您可能会更幸运地使用与Bigtable交谈,因为它现在是GA(一般可用)且功能齐全


特别是,您可能想看看那里的文件,它可能有关于正确的LLVM标志的提示,包括在编译中。编译器和链接器标志的使用与您在命令行中所做的没有什么不同。我添加了set(CMAKE_CXX_OUTPUT_EXTENSION.bc)set(CMAKE_CXX_flags“-S-emit llvm”)选项,但我不生成.bc文件,所以您目前正在使用CMAKE执行此操作?你为什么不在你的问题中提到这一点?请展示所有与获得帮助相关的内容!了解你的工具,伙计!添加标签并显示当前的

CMakeList.txt
也会有帮助。不!没有闲聊。。。。