首页 > 解决方案 > swift-lldb 编译失败,出现 c++11 错误

问题描述

我正在尝试编译(按照https://github.com/apple/swift-lldbswift-lldb的说明)。我安装了以下依赖项:Ubuntu 14.04

  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指向clangC 和 C++ 编译器。

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

我还在. clang_ 不知道我在这里缺少什么。有人可以帮忙吗?c++11clang-3.5

标签: swiftcmakeclangubuntu-14.04lldb

解决方案


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++标头位于 以外的非标准位置/usr/include,但在 Ubuntu 的情况下不太可能)。万一/usr/bin/clang++不能编译一个简单的程序,比如

#include <iostream>
using namespace std;
int main() {
    cout << "hello" << endl;
    return 0;
}

无法找到iostream包含文件,它可能有助于设置工作编译器的应包含、、、等的位置(可能--gcc-toolchain=/pathtoaworkinggccpathtoaworkinggccUbuntuinclude安装lib的情况下)。binC++g++


推荐阅读