OS X下默认的编译器是clang,在Terminal里面输入:
gcc -v
也可以清楚地看到是连到苹果的clang的。
我们要用gcc才能编译OpenMP程序,而在Eclipse中,默认是用clang来编译的。虽然我们看到的编译命令类似于:
gcc -O0 -g -Wall -c -fmessage-length=0 -fopenmp -MMD -MP -MF
但是实际上我们是在用clang编译,所以clang会告诉你"-fopenmp"这个指令是无法识别的,因而无法通过编译。
上网查找类似的问题,我们不难发现有这样几个解决办法,一是通过Homebrew或者MacPorts安装gcc然后用命令行编译,二是用OpenMP®/Clang。
当然二者都可以用终端编译OpenMP程序,成功解决这个问题,但是如何将gcc整合到Eclipse里呢?这就是我接下来要介绍的问题。
其实很简单,我是通过Homebrew安装的gcc,所以当我用”gcc-4.9“这个命令来编译的时候,就是真正在用gcc编译。
所以首先修改编译指令,右键Project->properties->c/c++ build->settings,将编译指令修改好。
再次编译时,发现提示找不到gcc-4.9,所以还需修改系统的PATH变量,右键Project->properties->c/c++ build->Environment,添加一个PATH变量,其中第一个参数是自己安装的gcc的目录,保存后再次编译就发现成功了。