- ベストアンサー
macportsなどに詳しい方へ質問です
https://okwave.jp/qa/q9364404.html この質問について、最新のclangならコンパイルできた、とありますが、その方法がよくわかりません。新しいコンパイラーをインストールする必要があるのでしょうか。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
参考 URL では gcc 7.1 をインストールしてたようですが、gcc ではコンパイルできなかったのですか? 自分は gcc と clang で一応 usi, isready までは確認しました。環境は FreeBSD 10.3 g++7 --version g++7 (FreeBSD Ports Collection) 7.1.1 20170615 clang++40 --version clang version 4.0.1 (tags/RELEASE_401/final) Target: x86_64-unknown-freebsd10.3 どちらにしても -std=c++14 を要求するので、あまり古いバージョンのコンパイラでは上手くいかないでしょう。 また若干 Makefile を修正してますが、ここに貼り付けるとスペースが圧縮されるので、 https://paiza.io/projects/zSb6MSLUlVIs7tWff7zhAw から makefile.diff として cd YaneuraOu/source patch < makefile.diff make sse42 COMPILER=g++7 LTOFLAGS=-flto mv YaneuraOu-by* ../exe/ make clean make sse42 COMPILER=clang++40 .... みたいにしてます。
その他の回答 (1)
- trapezium
- ベストアンサー率62% (276/442)
>「gccではコンパイルできなかったのですか?」の意味がよく分かっておりません。どのようにgccでコンパイルすればいいのでしょうか?コマンドが分かりません。 始めの質問が正にこの内容ですし、参照 URL の Web ページも、GCC を先にインストールして、Makefile を書き換えて使うような主旨です。 > cd YaneuraOu/source > make sse42 > とすれば、エラーが出ます。 初心者と言えども、状況に応じて Makefile やコンパイラのオプション修正、多少のコンパイルエラーの対処くらいは出来ないと、この手のソフトウェアのインストールは難しいと思います。 > また、貼ってくださったURLをコピーしてmakefile.diffというファイルをつくり、 これは OS も違いますし、あくまで参考程度のつもりでしたが、分る範囲で補足すると、 > make sse42 COMPILER=g++7 LTOFLAGS=-flto > としてもエラーがでました。これは修正前のmakefileファイルのままで成功するはずなのでしょうか? COMPILER= 指定は使用するコンパイラに合わせなければなりません。上でバージョン 7.1.1 でしたと書かれた g++ を指定します。パスが通っていれば名前のみ、通してなければフルパスで書きます。 LTOFLAGS= もコンパイラによってはそもそも使えなかったり、実行時に core dump するようですから、試して駄目なら指定を外します。 なお make の引数で指定しても、同様の内容に Makefile を修正しても同じ効果です。 また sse42 も CPU に合せて変更が必要でしょう。Makefile 内にターゲットが並んでいますから、自身のマシンの CPU に適合する最高のものを選びます。
お礼
何度もありがとうございました。詳しい方に聞いて解決してもらいました。
補足
何度も回答ありがとうございます。 申し訳ありませんが、私は初心者です、「gccではコンパイルできなかったのですか?」の意味がよく分かっておりません。どのようにgccでコンパイルすればいいのでしょうか?コマンドが分かりません。 cd YaneuraOu/source make sse42 とすれば、エラーが出ます。 gccのバージョンは7.1.1でした。 また、貼ってくださったURLをコピーしてmakefile.diffというファイルをつくり、 cd YaneuraOu/source patch < makefile.diff でyとし、 make sse42 COMPILER=g++7 LTOFLAGS=-flto としてもエラーがでました。これは修正前のmakefileファイルのままで成功するはずなのでしょうか?