强制mac使用GCC,而不是clang
Posted
技术标签:
【中文标题】强制mac使用GCC,而不是clang【英文标题】:Force mac to use GCC, not clang 【发布时间】:2017-11-19 13:11:07 【问题描述】:我有一个用 GNU C 在 Linux 上编写的程序。该程序使用 GCC 编译。我有一个安装 shell 脚本,
gcc -o program program.c -Wall -pedantic -std=gnu11 -lm -fopenmp
效果很好。
问题出在 Mac 上。出于某种原因,Mac 看到 gcc
而是使用 clang
,即使安装了 GCC 并且 install.sh 明确表示 gcc
。 clang
不适用于omp.h
问题是clang 不能使用omp.h
并且提供的解决方案http://releases.llvm.org/3.7.0/tools/clang/docs/ReleaseNotes.html#openmp-support 不起作用,omp.h
可能在mac 中根本不起作用Enable OpenMP support in clang in Mac OS X (sierra)
我从不使用 mac,因为这些废话,我从不打算使用。但是,有些使用我的程序的人想使用 Mac,所以我必须处理这个问题。
我尝试了各种shell脚本修改,但都不起作用,mac坚持使用clang
不会使用gcc
我需要做两件我不知道该怎么做的事情之一:
1) 强制 Mac 使用 gcc
(它现在拒绝这样做)
2) 让clang
在 mac 中使用 omp.h
(从 Stack Overflow 上的其他答案看来是不可能的)
【问题讨论】:
你说“即使安装了 GCC”...你是在哪里以及如何安装它的? 这里是如何强制Apple的clang使用OpenMP ***.com/a/47230419/3419533 【参考方案1】:您的第二个选项(让 clang 使用 omp.h)并非不可能(不再)。从我的回答here:
尝试使用Homebrew的llvm:
brew install llvm
然后你就拥有了/usr/local/opt/llvm/bin
中的所有 llvm 二进制文件。例如,要编译OpenMP Hello World program,请键入
/usr/local/opt/llvm/bin/clang -fopenmp -L/usr/local/opt/llvm/lib omp_hello.c -o hello
您可能还需要将CPPFLAGS
设置为-I/usr/local/opt/llvm/include
。
【讨论】:
以上是关于强制mac使用GCC,而不是clang的主要内容,如果未能解决你的问题,请参考以下文章
在 Solaris Sparc 下的 ./configure 中强制使用 gcc 编译(而不是 cc)