我正在尝试在Ubuntu 14.04
上编译swift-lldb
(遵循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
文档中发现clang-3.5
支持c++11
。不确定我在这里遗漏了什么。有人能帮帮忙吗?
发布于 2018-12-19 07:58:41
安装过程中提到的clang应该支持-std=c++11
标志(刚刚测试过的clang-4.0
-4.0.1)。然而,升级到clang-6.0
似乎可以解决这个构建过程中的错误。
在自动创建的构建目录中直接运行cmake
(通过快速构建脚本)可用于更详细地调查构建失败。要在这里指定编译器,而不是设置CC
和CXX
环境变量(这对于GNU configure脚本很有效),可以通过以下方式为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=/pathtoaworkinggcc
可能会有所帮助,其中pathtoaworkinggcc
应包含工作的C++
编译器的include
、lib
、bin
等(在安装Ubuntu的情况下可能为g++
)。
https://stackoverflow.com/questions/53842727
复制相似问题