use*_*256 19 c++ gcc g++ openmp
我是C的新手,在OS X中编译代码时遇到了一些问题.
我在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
Run Code Online (Sandbox Code Playgroud)
但是当我使用时,g++ Mesh.cpp -fopenmp我仍然会得到
Mesh.cpp:4:10: fatal error: 'omp.h' file not found
#include <omp.h>
^
1 error generated.
Run Code Online (Sandbox Code Playgroud)
然后我尝试将PTP安装到Eclipse中并遇到同样的问题.我以为omp.h我的MacBook 中没有,所以我搜索了它,发现下面有几个omp.h文件夹gcc-4.9.1/build/.
这就是问题所在.根据Java经验,我拥有该文件但无法使用它的唯一原因是类路径错误.但是,我不知道如何在g ++,Xcode或Eclipse中更改此配置.但是因为我可以包含<stdio.h>所有IDE的文件并使用所有IDE编译它,我怎么能不这样做<omp.h>呢?
我注意到的另一件事是gcc文件夹版本是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
Run Code Online (Sandbox Code Playgroud)
版本信息不应该说些什么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)
Run Code Online (Sandbox Code Playgroud)
谢谢阅读.任何帮助表示赞赏.
小智 34
这个命令可以帮到你
brew安装libomp
brew info libomp
libomp: stable 6.0.1 (bottled)
LLVM's OpenMP runtime library
https://openmp.llvm.org/
/usr/local/Cellar/libomp/6.0.1 (12 files, 1.2MB) *
Poured from bottle on 2018-11-20 at 16:12:22
From: https://github.com/Homebrew/homebrew-core/blob/master/Formula/libomp.rb
==> Dependencies
Build: cmake ?
==> Requirements
Required: macOS >= 10.10 ?
==> Caveats
On Apple Clang, you need to add several options to use OpenMP's front end
instead of the standard driver option. This usually looks like
-Xpreprocessor -fopenmp -lomp
You might need to make sure the lib and include directories are discoverable
if /usr/local is not searched:
-L/usr/local/opt/libomp/lib -I/usr/local/opt/libomp/include
For CMake, the following flags will cause the OpenMP::OpenMP_CXX target to
be set up correctly:
-DOpenMP_CXX_FLAGS="-Xpreprocessor -fopenmp -I/usr/local/opt/libomp/include" -DOpenMP_CXX_LIB_NAMES="omp" -DOpenMP_omp_LIBRARY=/usr/local/opt/libomp/lib/libomp.dylib
Run Code Online (Sandbox Code Playgroud)
rub*_*nvb 12
该gcc和g++你认为他们与XCode的命令不是:苹果公司认为这将是伪装锵作为GCC,使过渡更平滑的一个好主意.
Clang OpenMP支持仍在进行中.如果我没有错过任何大量的WIP代码,你需要构建这个版本的clang并使用它.
你当然可以通过自制软件或macports之类的东西来安装一个真正的GCC,它将随OpenMP支持一起提供.
小智 10
MacOS 似乎包含该库,但如果您只是使用,XCode 找不到它:
#include <omp.h>
Run Code Online (Sandbox Code Playgroud)
但是,如果您没有安装该库,则可以通过使用 HomeBrew 安装来简单地添加它:
brew install libomp
Run Code Online (Sandbox Code Playgroud)
执行此操作后,只需将库包含代码替换为以下代码:
#include "/usr/local/opt/libomp/include/omp.h"
Run Code Online (Sandbox Code Playgroud)
或使用 brew 安装 libomp 后终端向您显示的路径。
该omp.h文件已移至子目录。我在 MacPorts 中找到了它,并通过创建指向此文件的链接解决了这个编译问题:
sudo ln -s /opt/local/include/libomp/omp.h /opt/local/include/omp.h
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
45998 次 |
| 最近记录: |