在 Fedora 15 上使用 clang

Tam*_*lei 5 fedora llvm

我已经通过 yum 安装了 clang:

yum install clang
Run Code Online (Sandbox Code Playgroud)

不幸的是,即使是一个简单的“Hello World!” 不会编译,因为它试图使用 libstdc++4.6 的头文件(我认为它具有 c++ 0x 不理解的特性)。我找不到 libstdc++4.5 包,仅适用于显然没有安装的 F14。

我什至尝试安装 2.9 二进制文件,并为自己编译和安装了 svn 主干。这些都没有帮助。

我记得在 ubuntu 上遇到过同样的问题,但我能够通过安装 libstdc++4.5 头文件来解决它。

那么,人们如何在 Fedora 上使用 clang?

小智 3

如您所知, libstdc++4.6 的 llvm 中存在bugbug 。我刚刚根据此说明使用 trunk 中的 clang 编译了 llvm

你必须配置包含路径,我使用这个命令在F15 x86_64上配置和编译它:

../llvm/configure \
  --enable-optimized \
  --disable-assertions \
  --enable-jit \
  --enable-libffi \
  --enable-shared \
  --with-c-include-dirs=/usr/include:$(find /usr/lib/gcc/*/* \
        -maxdepth 0 -type d)/include \
  --with-cxx-include-32bit-dir=32 \
  --with-cxx-include-root=$(find /usr/include/c++/* -maxdepth 0 -type d) \
  --with-cxx-include-arch=x86_64-redhat-linux

make -j3
sudo make install
Run Code Online (Sandbox Code Playgroud)

我能够编译 hello world

#include <iostream>

int main() {
  std::cout << "Hello, World!\n";
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

clang -o hello hello.cpp -lstdc++

$ ./hello 
Hello, World!
Run Code Online (Sandbox Code Playgroud)

该文档可能也会引起您的兴趣。

我想有一种替代方法可以使用libc++,但我自己还没有尝试过。

Fedora llvm 2.9 二进制文件将无法工作,因为某些 mesa 依赖于 2.8。

希望这可以帮助 :)