gcc 在Mac OS X 10.11上安装OpenMP

e5njpo68  于 2022-11-30  发布在  Mac
关注(0)|答案(7)|浏览(244)

如何让OpenMP在Mac OSX 10.11上运行,以便我可以通过终端执行脚本?
我已安装OpenMP:brew install clang-omp .
比如我跑步的时候:gcc -fopenmp -o Parallel.b Parallel.c则下列运算式会传回:fatal error: 'omp.h' file not found
我也试过:brew install gcc --without-multilib,但不幸的是,这最终返回了以下内容(在首次安装一些依赖项之后):

The requested URL returned error: 404 Not Found
Error: Failed to download resource "mpfr--patch"

是否有任何建议的解决方法?

exdqitrt

exdqitrt1#

在Mac上,命令gcc是到Clang的符号链接。

gcc -fopenmp -o your_program your_program.c

您实际上使用的是Clang,而Clang到目前为止还没有内置OpenMP支持。
根据this post(在那里你也可以找到如何设置它的说明),Clang的新版本确实支持OpenMP。
另一方面,如果你仍然想使用gcc,我可以指导你完成对我有效的步骤。
1.**使用brew安装gcc。**您使用的命令应该可以正常工作:

brew install gcc --without-multilib

或者,如果brew提示您已经安装了gcc,您可以尝试

brew reinstall gcc --without-multilib

您可能已经注意到,如果不指定--without-multilib,brew会警告您OpenMP可能无法工作。
1.查找新安装的gcc的位置。
Brew将版本号附加到gcc,这样它就不会与命令行工具安装的版本号冲突。您可以在usr/local/bin中找到符号链接。
在我的情况下

usr/local/bin/gcc-5

如果右键单击并选择**“Show original**”(显示原始文件**),则应显示/usr/local/Cellar/gcc/5.3.0/bin/gcc-5gcc-5可执行文件(版本号可能不同)。
1.现在您需要将此消息告知系统:
调用编译器时,bash默认会查找/usr/bin,而不是/usr/local/bin。您需要将此目录添加到**$PATH**中。
这可以通过以下命令轻松完成:

PATH=/usr/local/bin:$PATH

1.现在,您应该能够使用以下命令在启用OpenMP的情况下进行编译:

gcc-5 -fopenmp -o your_program your_program.c

备注:gcc-5是我安装的版本,您的版本可能不同。

oyxsuwqo

oyxsuwqo2#

  • 安装clang-omp
brew install clang-omp
  • 确保你已经安装了xcode命令行工具
xcode-select --install
  • 实际上,我在运行示例openmp代码时遇到了一个错误。
/usr/local/opt/libiomp/include/libiomp/omp.h:139:21: error: expected ';' after top level declarator extern void   __ KAI_KMPC_CONVENTION kmp_set_stacksize_s        (size_t);
  • 只需从文件中删除__和KAI之间的一个空格
  • 现在使用命令
clang-omp -fopenmp helloopenmp.c

并运行以下代码

#include <omp.h>
    #include <stdio.h>
    int main() {
        #pragma omp parallel
        printf("Hello from thread %d, nthreads %d\n", omp_get_thread_num(), omp_get_num_threads());
    }
  • 您应该会得到类似于以下内容的输出
Hello from thread 3, nthreads 4
 Hello from thread 2, nthreads 4
 Hello from thread 0, nthreads 4
 Hello from thread 1, nthreads 4
  • 在OS X 10.11.3上工作,并在2016年2月18日进行brew更新
xwbd5t1u

xwbd5t1u3#

macOS高塞拉利昂版本10.13.6(17 G65)

1.安装gcc

brew reinstall gcc --without-multilib

2.编译

gcc-8 -Wall -fopenmp your-parallel-program.c
请注意gcc-8查看 * 版本 * brew安装,您的版本可能是 gcc-7gcc-9
==> Pouring gcc-8.2.0.high_sierra.bottle.1.tar.gz 🍺 /usr/local/Cellar/gcc/8.2.0: 1,495 files, 344.8MB
就是这样!

w80xi6nr

w80xi6nr4#

默认情况下,愚者使用clang发行版。使用Homebrew安装愚者。安装后,您可以编译代码指定Homebrew安装的愚者版本添加OpenMP标志。hello_world示例如下所示:

  1. brew安装gcc
  2. brew安装libomp
  3. brew信息gcc
    gcc:稳定10.2.0(瓶装),头
    GNU编译器集合
    1.导出OMP_NUM_THREADS=8
    1.创建hello.c
#include <stdio.h>
#include <omp.h>
int main(void){
    #pragma omp parallel 
    {
        printf("Hello World! \n");
    }

    return 0;
}
  1. gcc-10 -fopenmp你好. c-o你好
    1.执行:./hello
Hello World!
Hello World!
Hello World!
Hello World!
Hello World!
Hello World!
Hello World!
Hello World!
vxbzzdmp

vxbzzdmp5#

1.使用brew安装gcc。

brew install gcc

1.检查gcc是否已安装。

$which g++-7
/usr/local/bin/g++-7

1.更改cmake cxx编译器。

cmake -DCMAKE_CXX_COMPILER=g++-7
make

也许这个能帮你。

ao218c7q

ao218c7q6#

安装gcc后:

brew install gcc --without-multilib

和导出PATH:

export PATH=/usr/local/bin:$PATH

您可能需要导出CC,这对我很有效:

export CC=/usr/local/bin/gcc

这可能是gcc-7,或者别的什么。

30byixjq

30byixjq7#

brew install cmake
brew install gcc --without-multilib
cmake -DCMAKE_CXX_COMPILER=g++-6 .. 
make -j

相关问题