首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >swift-lldb编译失败,出现c++11错误

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

Stack Overflow用户
提问于 2018-12-19 07:47:04
回答 1查看 179关注 0票数 1

我正在尝试在Ubuntu 14.04上编译swift-lldb (遵循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时,我看到以下错误:

代码语言:javascript
复制
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++编译器。

代码语言:javascript
复制
root:/myswift# echo $CC
/usr/bin/clang
root:/myswift# echo $CXX
/usr/bin/clang++

我还在clang文档中发现clang-3.5支持c++11。不确定我在这里遗漏了什么。有人能帮帮忙吗?

EN

回答 1

Stack Overflow用户

发布于 2018-12-19 07:58:41

安装过程中提到的clang应该支持-std=c++11标志(刚刚测试过的clang-4.0 -4.0.1)。然而,升级到clang-6.0似乎可以解决这个构建过程中的错误。

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

代码语言:javascript
复制
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++不能编译像这样的简单程序

代码语言:javascript
复制
#include <iostream>
using namespace std;
int main() {
    cout << "hello" << endl;
    return 0;
}

由于无法找到iostream包含文件,因此设置--gcc-toolchain=/pathtoaworkinggcc可能会有所帮助,其中pathtoaworkinggcc应包含工作的C++编译器的includelibbin等(在安装Ubuntu的情况下可能为g++ )。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53842727

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档