2014-09-23 277 views
11

我是C新手,在編譯我的OS X代碼時遇到了一些問題。如何在OS X中包含omp.h?

我在Eclipse中編寫了很多Java代碼,並使用終端編譯我的代碼。但是現在我正在學習openMP並且遇到麻煩。

首先我下載了​​Xcode來編寫openMP代碼,但它不識別<omp.h>。然後我安裝了g++。當我鍵入g++ -v到終端我得到這個:

Configured with: --prefix=/Applications/Xcode.app/Contents/Developer/usr --with-gxx-include-dir=/usr/include/c++/4.2.1 
Apple LLVM version 5.1 (clang-503.0.40) (based on LLVM 3.4svn) 
Target: x86_64-apple-darwin13.3.0 
Thread model: posix 

但是當我使用g++ Mesh.cpp -fopenmp我仍然得到

Mesh.cpp:4:10: fatal error: 'omp.h' file not found 
#include <omp.h> 
     ^
1 error generated. 

然後我試圖PTP安裝到我的Eclipse,並得到了同樣的問題。 我以爲我的MacBook中沒有omp.h,所以我搜索了它,發現gcc-4.9.1/build/下的文件夾下有幾個omp.h

問題來了。基於Java的經驗,我有這個文件但不能使用它的唯一原因是類路徑是錯誤的。但是,我不知道如何在g ++,Xcode或Eclipse中更改此配置。但是由於我可以包含像<stdio.h>這樣的文件,並將其與所有IDE一起編譯,我怎麼能不能和<omp.h>一樣?

另一件事我注意到的是,海灣合作委員會的文件夾版本是4.9.1,但是當我鍵入gcc -v到終端我與輸入相同的g++ -v

Configured with: --prefix=/Applications/Xcode.app/Contents/Developer/usr --with-gxx-include-dir=/usr/include/c++/4.2.1 
Apple LLVM version 5.1 (clang-503.0.40) (based on LLVM 3.4svn) 
Target: x86_64-apple-darwin13.3.0 
Thread model: posix 

不宜版本信息說,有關4.9.1?就像java -version顯示的那樣

java version "1.8.0_11" 
Java(TM) SE Runtime Environment (build 1.8.0_11-b12) 
Java HotSpot(TM) 64-Bit Server VM (build 25.11-b03, mixed mode) 

感謝您的閱讀。任何幫助表示讚賞。

回答

12

GCC 4.9.1通常不附帶OS X(實際上GCC不再附帶Xcode)。您必須通過其他方式安裝,例如自制或自編的here。您可能丟失的是正確設置的PATH變量,或者額外安裝的編譯器具有版本後綴二進制文件,即gcc-4.9g++-4.9而不是簡單的gcc/g++

正如@rubenvb已經提到的,Apple將Clang可執行文件與GCC類似的名稱進行符號鏈接。我個人發現,自Xcode附帶的最新Clang版本以來,一個糟糕的做法會對無法識別的命令行選項(例如GCC前端特定的選項)做出反應,並帶有嚴重錯誤。

+0

我安裝了GCC完全遵循你提到的鏈接,但它仍然無法工作... – user3928256 2014-09-23 08:53:17

+0

如果你按照鏈接頁面上的說明,那麼你的編譯器被命名爲'g ++ - 4.9',除非你安裝到'/ usr/local/bin'中,否則你必須明確地添加路徑。此外,您必須重新配置PTP才能調用'g ++ - 4.9'而不是'g ++'。 – 2014-09-23 08:57:08

+1

謝謝!輸入「export PATH =/usr/gcc-4.9.1/bin:$ PATH」後,我現在可以使用「g ++ - 4.9」。 – user3928256 2014-09-23 09:08:51

10

gccg++命令與您認爲它們與XCode不同:Apple認爲將Clang僞裝成GCC以使轉換更平滑是個好主意。

Clang OpenMP支持仍在進行中。如果我沒有錯過WIP代碼的任何大版本,則需要構建this version of clang並使用它。

你當然可以通過像自制軟件或macports這樣的東西安裝一個真正的GCC,它將帶有OpenMP支持。

+1

所以基本上問題是我的筆記本電腦中的海灣合作委員會是Cla假的?由於後者不支持openMP,會導致所有問題?謝謝。 – user3928256 2014-09-23 08:51:14

+0

@ user3928256是的,執行的'gcc'命令是由XCode提供的,實際上就是Clang。我確實想到你提到安裝GCC 4.9.1的部分問題。所以,如果你按照@Hristo的描述設置PATH,你應該沒問題。 – rubenvb 2014-09-23 09:24:54

+0

來自鏈接網站的更新:clang/llvm編譯器中OpenMP支持的開發活動已移至www.llvm.org。請獲得啓用OpenMP的叮噹聲(OpenMP 3.1在clang/llvm 3.7中完全支持),並有助於其進一步開發。本網站僅用於存檔目的。 – Xoltar 2016-03-16 00:25:18