将llvm-3.6/llvm引用为llvm
Reference llvm-3.6/llvm as llvm
我在Willy(Ubuntu 15.10)上安装了llvm-3.6-dev包。除了一个小问题外,这个包运行良好-所有的头和库都在/usr/include/llvm-3.6
中,例如/usr/include/llvm-3.6/llvm/IR/Support.h
。这意味着我的仅引用llvm/IR/Support.h
的程序不会针对这些包构建。
有没有一种方法可以让G++或Ubuntu在默认情况下查看这个文件夹?
目前,我只是将include路径直接添加到命令行中。然而,例如,如果包决定将它们放在/usr/local/include
而不是/usr/include
中,这将非常糟糕,因此它非常脆弱。
我可以给apt-get install
传递一些额外的参数,让它在没有前缀的情况下安装它们吗?
您可以简单地将-I path
添加到g++命令行选项中,并将-L path
添加到链接器命令中。然而,LLVM确实提供了一个工具,用于生成使用特定版本的LLVM构建所需的选项(只要LLVM本身是使用正确的选项构建的)
要使用llvm
库函数和头,您应该使用llvm-config --libs
、llvm-config --ldflags
和--llvm-config --cxxflags
来获得构建代码的"正确"选项。
这应该进入你的makefile或者你用来构建代码的任何东西。
使用该方法的示例:https://github.com/Leporacanthicus/lacsap/blob/master/Makefile
顺便说一句,构建自己的LLVM(和Clang)并不是很难——它需要一段时间,在使用6核AMD处理器的台式机上大约需要15分钟,在我的四核笔记本电脑上需要更多,在我工作的机器上需要更少)
这就是我构建clang+llvm:的方式
签出llvm至:
cd sources # Or whatever you want to keep your LLVM sources.
git clone http://llvm.org/git/llvm.git llvm
然后创建一个临时的"buildllvm"目录:
CC=clang CXX=clang++ cmake -DCMAKE_BUILD_TYPE=Release -DLLVM_ENABLE_ASSERTIONS=1 -DLLVM_TARGETS_TO_BUILD=X86 ../llvm
make -j 8
sudo make install
将数字8调整为与您的处理器内核大致相同。
这没有指定目标目录,因此将在/usr/local/{lib,include,…}中安装自己
我还构建了库的调试版本:
export CC=clang
export CXX=clang++
cmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX=/usr/local/llvm-debug -DLLVM_TARGETS_TO_BUILD=X86 ../llvm
make -j 8
sudo make install
它确实指定了安装目录。
- 将对象数组的引用传递给函数
- 什么时候在C++中返回常量引用是个好主意
- 我想将一个对T类型的非常量左值引用绑定到一个T类型的临时值
- 何时在引用或唯一指针上使用移动语义
- 如何在c++中使用引用实现类似python的行为
- 编译C++时未定义的引用
- Ctypes wstring通过引用传递
- c++r值引用应用于函数指针
- 如何将 I->getType() 作为参数传递给 llvm 中的 CreateCall?
- 理解c++中的引用
- C++取消引用指针.为什么会发生变化
- 如何修复此错误:未定义对"距离(浮点数,浮点数,浮点数,浮点数,浮点数)"的引用
- 我的项目不会像"undefined reference to `grpc::g_core_codegen_interface'"那样使用未定义的引用错误进行编译
- C++Boost Asio Pool线程,带有lambda函数和传递引用变量
- LLvm Jit:如何从抖动代码中取消引用运行时指针?
- 如何引用 LLVM 迭代器?
- 如何获取LLVM中指令引用的所有全局变量
- LLVM 引用不存在的标头
- Apple LLVM 4.2 段错误使用基于范围的循环和引用
- 将llvm-3.6/llvm引用为llvm