質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.37%
コンパイラ

コンパイラは、プログラミング言語で記述したソースコードを、コンピュータの実行形式であるオブジェクトコードに変換するプログラムです。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

解決済

2回答

17089閲覧

clangではなくg++をコンパイラとして使いたい

pteryx

総合スコア16

コンパイラ

コンパイラは、プログラミング言語で記述したソースコードを、コンピュータの実行形式であるオブジェクトコードに変換するプログラムです。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

2クリップ

投稿2017/01/11 11:42

###発生している問題
お世話になります。
openMPを用いたC++のコードを動かしたいのですが、makeを通そうとすると

g++ -std=c++11 -c main.cpp -O3 -I/usr/local/include -fopenmp
clang: error: unsupported option '-fopenmp'
make: *** [main.o] Error 1

というエラーが出力され、makeが通りません。
コンパイルにclangが使われているのが原因であるとわかるのですが、どうしたらgccやg++でコンパイルされるようにできるのでしょうか?

###詳細
ホームディレクトリで

gcc --version

を実行すると、

Configured with: --prefix=/Applications/Xcode.app/Contents/Developer/usr --with-gxx-include-dir=/usr/include/c++/4.2.1
Apple LLVM version 8.0.0 (clang-800.0.42.1)
Target: x86_64-apple-darwin16.0.0
Thread model: posix
InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin

と出力されます。また、homebrewを用いて

brew tap homebrew/versions brew install gcc49

を実行してみましたが、

sudo ln -sf /usr/local/bin/gcc-4.9 /usr/bin/gcc

の実行が許可されず、homebrewでインストールされたgcc-4.9を使ってもらえないようです。

なにぶんgccのことがよくわかっていないため、どうして良いかわかりません。
よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

homebrewでgcc49をインストールしたのなら、/usr/local/bin/g++-4.9にリンクができているはずです。自分でリンクを作る必要はないです。また、homebrewをインストールしたときにPATHに/usr/local/binが含まれているのではないかと思います。

Makefileなどで「g++」となっている箇所を「g++-4.9」か「/usr/local/bin/g++-4.9」に変更すれば、OpenMP対応ずみのGCCを使うようになります。

  • Makefileの中でCCCXXといった変数を使っているのなら、satorenさんのご回答の方法で変更できます。
  • なお、最初にconfigureスクリプトを実行するタイプのパッケージなら、「./configure (オプション) CXX=g++-4.9」のようにして変更します (詳しくは./configure --helpを実行して、表示されるものの最後の方を見て下さい)。

投稿2017/01/13 01:40

ikedas

総合スコア4443

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

pteryx

2017/01/13 01:52

ありがとうございます。 Makefileを書き換えて解決しました!
guest

0

gccではなくgcc-4.9を使用すればいいです。
これだけだとそんなことは解ってるって言われそうですが、
具体的にはビルドする時のコマンドが

g++-4.9 -std=c++11 -c main.cpp -O3 -I/usr/local/include -fopenmp

となるように変更すればよいのです。
Makefileの書き方によりますが、通常はCCをCコンパイラCXXをC++コンパイラとしているので、そのような書き方をしているMakefileの場合は

export CC=gcc-4.9 export CXX=g++-4.9 make

とすることで使用するコンパイラを変更することができます。

もし自身で書かれたMakefileを使用している場合はg++と指定している箇所があると思うので、そこをg++-4.9に変更すればよいだけです。

投稿2017/01/12 18:00

satoren

総合スコア109

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

pteryx

2017/01/13 01:52

ありがとうございます。無事に解決しました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.37%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問