swift-lldb编译失败,并出现c ++ 11错误

时间:2018-12-18 23:47:04

标签: swift cmake clang ubuntu-14.04 lldb

我正在尝试在swift-lldb上编译Ubuntu 14.04(遵循https://github.com/apple/swift-lldb的指示)。我安装了以下依赖项:

  1. Clang-3.5
  2. Cmake version 3.5.2
  3. Python version 2.7.6

在运行构建脚本步骤lldb/scripts/build-swift-cmake.py --test时,我看到以下错误:

CMake Warning at cmake/modules/HandleLLVMOptions.cmake:185 (message):
  -fPIC is not supported.
Call Stack (most recent call first):
  cmake/modules/HandleLLVMOptions.cmake:216 (add_flag_or_print_warning)
  CMakeLists.txt:616 (include)


CMake Error at cmake/modules/HandleLLVMOptions.cmake:429 (message):
  LLVM requires C++11 support but the '-std=c++11' flag isn't supported.
Call Stack (most recent call first):
  CMakeLists.txt:616 (include)

我已经定义了环境变量CCCXX指向clang C和C ++编译器。

root:/myswift# echo $CC
/usr/bin/clang
root:/myswift# echo $CXX
/usr/bin/clang++

我在clang文档中也发现c++11支持clang-3.5。不知道我在这里想念的是什么。有人可以帮忙吗?

1 个答案:

答案 0 :(得分:1)

在安装过程中提到的

clang-4.0应该支持-std=c++11标志(经过测试的clang-4.0.1)。但是,升级到clang-6.0似乎可以解决此生成过程错误。

直接在自动创建的构建目录中运行cmake(通过快速构建脚本)可用于更详细地调查构建失败。要在此处指定编译器,而不是设置CCCXX环境变量(这对GNU配置脚本非常有效),可以通过

cmake设置编译器
cmake -DCMAKE_C_COMPILER=/usr/bin/clang -DCMAKE_CXX_COMPILER=/usr/bin/clang++ path_to_src_or_build_directory

可能必须删除现有的CMakeCache.txt,以便遵守上述参数。

我观察到的clang++安装中的一个问题是clang++找不到C++ headers(即,如果C++标头位于{{1}以外的非标准位置}},但对于Ubuntu则不太可能。万一/usr/include无法编译像

这样的简单程序
/usr/bin/clang++

无法找到#include <iostream> using namespace std; int main() { cout << "hello" << endl; return 0; } 包含文件,设置iostream可能会有所帮助,其中--gcc-toolchain=/pathtoaworkinggcc应该包含pathtoaworkinggccinclude,{{ 1}}等有效的lib编译器(在安装Ubuntu的情况下,可能是bin)。