强制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 明确表示 gccclang 不适用于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)

如何在 GCC 下强制设置“布尔”的大小

gcc警告分配使指针从整数而不进行强制转换[重复]

mac下的gcc如何使用。。

Mac Eclipse GCC 4.9.0“启动配置中指定的程序文件不存在”

用于 GCC/G++ 的宏来区分 Linux 和 Mac OSX?