【问题标题】:LLVM + gRPC compilationLLVM + gRPC 编译
【发布时间】: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 WorldRoute 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


【解决方案1】:

使用 Bigtable C++ client 与 Bigtable 交谈可能会更幸运,因为它现在是 GA(普遍可用)并且功能齐全。

特别是,您可能想查看那里的 CMakeLists.txt 文件,它可能会提示您编译中包含的正确 LLVM 标志。

【讨论】:

    【解决方案2】:

    我知道两种选择:

    • 如果您正在使用 Make 文件并且想要提取位码档案等,请使用 whole-program-llvm

    • 如果你想用 CMake 做类似的事情,请使用 llvm-ir-cmake-utils;您必须使用提供的调用来调整/增加您的CMakeLists.txt(此 repo 中有示例)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-08
      • 2011-07-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多