簡體   English   中英

在OSX上使用clang ++進行編譯,但不能包含/查找頭文件

[英]Compiling with clang++ on OSX but cannot include/find header files

我正在嘗試在Matlab上安裝垃圾郵件工具箱,以優化稀疏表示問題。

下載頁面-> http://spams-devel.gforge.inria.fr/downloads.html

最初,當我嘗試使用compile.m腳本進行編譯時,它說:

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

然后,我找到了這篇文章,我按照下面的說明進行操作,似乎以前的錯誤已修復


在此處輸入圖片說明


但是現在,我收到錯誤提示:

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

當我轉到源文件並注釋此行時,它在包含iostream時給了我錯誤: 在此處輸入圖片說明

因此,我可能認為這是有關庫的問題,但是我對C ++或C語言並不熟悉,我需要一些幫助。

最后,我通過執行以下步驟解決了這個問題:

通過homebrew 安裝 gcc編譯器和openmp支持:

brew install gcc --without-multilib

安裝后, 在命令行中

alias gcc=gcc-6
alias clang=gcc-6
alias g++=g++-6

這樣,您可以將cpp編譯器與openmp支持一起使用。


讓我們運行一個測試程序來檢查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可以正常工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM