将llvm-3.6/llvm引用为llvm

Reference llvm-3.6/llvm as llvm

本文关键字:llvm 引用 llvm-3      更新时间:2023-10-16

我在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 --libsllvm-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

它确实指定了安装目录。