【问题标题】:clang++ via homebrew (llvm38) - compile error with system includesclang++ 通过 homebrew (llvm38) - 编译错误与系统包括
【发布时间】:2016-05-19 11:28:36
【问题描述】:

我正在使用 Mac 进行 10.11.3 的开发

由于 Xcode 7 中的 Apple llvm 仍然不支持 openmp,我使用自制软件安装了更新的 llvm/clang,它确实支持 openmp:

$ brew tap homebrew/versions
$ brew install llvm38

然后我有一个非常简单的 C++ 测试程序,它或多或少是一个标准的 openmp 测试,我知道应该编译它:

#include <iostream>
#include <omp.h>

int main(void)
{
    #pragma omp parallel for
    for( unsigned v = 0; v < 15; ++v )
    {
        printf("thread %d, nthreads %d\n", omp_get_thread_num(), omp_get_num_threads());
    }
}

使用自制软件安装,它建议您需要指定一些额外的东西才能成功编译,特别是从 llvm38 包安装的 c++ 系统头文件的路径。这导致我进入以下命令行:

/usr/local/opt/llvm38/bin/clang++-3.8 -fopenmp openmp.cpp -stdlib=libc++ -nostdinc++ -I /usr/local/opt/llvm38/lib/llvm-3.8/include/c++/v1/ -L/usr/local/opt/llvm38/lib/llvm-3.8/lib

但是,在运行此命令时,编译失败:

machine:tests me$ /usr/local/opt/llvm38/bin/clang++-3.8 openmp.cpp -stdlib=libc++ -nostdinc++ -I /usr/local/opt/llvm38/lib/llvm-3.8/include/c++/v1/ -L/usr/local/opt/llvm38/lib/llvm-3.8/lib
In file included from openmp.cpp:1:
In file included from /usr/local/opt/llvm38/lib/llvm-3.8/include/c++/v1/iostream:38:
In file included from /usr/local/opt/llvm38/lib/llvm-3.8/include/c++/v1/ios:215:
In file included from /usr/local/opt/llvm38/lib/llvm-3.8/include/c++/v1/iosfwd:90:
/usr/local/opt/llvm38/lib/llvm-3.8/include/c++/v1/wchar.h:119:15: fatal error: 'wchar.h' file not found
#include_next <wchar.h>
              ^
1 error generated.

有谁知道如何解决这个问题并获得成功的编译?

【问题讨论】:

  • 删除“-nostdinc++”时出现同样的错误?
  • 是的,确实,同样的错误。
  • 你肯定需要clang++-3.8 -fopenmp ...
  • 是的,抱歉 -fopenmp 对使用 openmp 进行编译很重要,但这不是导致此错误的原因。干杯。
  • 您是否安装了 Xcode 命令行工具?并在任何操作系统升级后重新安装它们? stackoverflow.com/a/32338889/2836621

标签: c++ compiler-errors homebrew clang++


【解决方案1】:

根据对原始问题的评论,重新安装/更新 Xcode 开发人员工具解决了该问题。

xcode-select --install

【讨论】:

    猜你喜欢
    • 2013-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-30
    • 1970-01-01
    • 2019-03-08
    • 2020-10-25
    • 1970-01-01
    相关资源
    最近更新 更多