在OSX上使用clang ++进行编译但不能包含/查找头文件

时间:2016-07-22 05:57:10

标签: c++ matlab clang

我正在尝试在Matlab上安装垃圾邮件工具箱,以优化稀疏表示问题。

  

下载页面 - > http://spams-devel.gforge.inria.fr/downloads.html

首先,当我尝试使用compile.m脚本编译它时,它说:

clang: error: unsupported option '-fopenmp'
error: command 'clang' failed with exit status 1

然后,我发现这篇文章,我按照下面的说明,似乎上一个错误已修复

enter image description here

但现在,我收到错误说:

...mexArchetypalAnalysis.cpp:32:
./linalg/mexutils.h:15:10:
fatal error: 'typeinfo' file not found
#include <typeinfo>

当我转到源文件并对此行发表评论时,它给出了包含 iostream 的错误: enter image description here

所以我可能认为这是关于库的问题,但我不熟悉C ++或C的东西,我需要一些帮助。

1 个答案:

答案 0 :(得分:0)

最后,我通过以下步骤解决了这个问题:

通过openmp安装 gcc编译器和homebrew支持:

brew install gcc --without-multilib

安装后,在命令行中

alias gcc=gcc-6
alias clang=gcc-6
alias g++=g++-6
通过这样做,您可以使用带有openmp支持的cpp编译器。

让我们运行一个测试程序来检查openmp是否正常工作:

#include <stdio.h>
#include <omp.h>

int  print(int i){
    int tmp = 0;
    for(int i=0;i<100000000;i++){
        tmp += 1; // time consuming loop
    }

    printf("%d\t",i);
    return i;
}

int main(){

    #pragma omp parallel for
    for(int i=0; i<10;i++){
       print(i);
    }
    return 0;
}

<强>编译:

gcc -fopenmp test.cpp -o run

g++ -fopenmp test.cpp -o run

<强>输出:

0   8   3   6   1   9   4   7   2   5

如您所见,它们未按订单打印,这表示openmp正常工作。