我正在尝试在swift-lldb
上编译Ubuntu 14.04
(遵循https://github.com/apple/swift-lldb的指示)。我安装了以下依赖项:
Clang-3.5
Cmake version 3.5.2
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)
我已经定义了环境变量CC
和CXX
指向clang
C和C ++编译器。
root:/myswift# echo $CC
/usr/bin/clang
root:/myswift# echo $CXX
/usr/bin/clang++
我在clang
文档中也发现c++11
支持clang-3.5
。不知道我在这里想念的是什么。有人可以帮忙吗?
答案 0 :(得分:1)
clang-4.0
应该支持-std=c++11
标志(经过测试的clang-4.0.1)。但是,升级到clang-6.0
似乎可以解决此生成过程错误。
直接在自动创建的构建目录中运行cmake
(通过快速构建脚本)可用于更详细地调查构建失败。要在此处指定编译器,而不是设置CC
和CXX
环境变量(这对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
应该包含pathtoaworkinggcc
,include
,{{ 1}}等有效的lib
编译器(在安装Ubuntu的情况下,可能是bin
)。