みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

macportsなどに詳しい方へ質問です

https://okwave.jp/qa/q9364404.html

この質問について、最新のclangならコンパイルできた、とありますが、その方法がよくわかりません。新しいコンパイラーをインストールする必要があるのでしょうか。

投稿日時 - 2017-08-29 18:10:23

QNo.9368535

困ってます

質問者が選んだベストアンサー

参考 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
....
みたいにしてます。

投稿日時 - 2017-08-29 22:59:05

補足

何度も回答ありがとうございます。
申し訳ありませんが、私は初心者です、「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ファイルのままで成功するはずなのでしょうか?

投稿日時 - 2017-08-29 23:55:32

お礼

何度もありがとうございました。詳しい方に聞いて解決してもらいました。

投稿日時 - 2017-09-05 18:59:55

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

>「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 に適合する最高のものを選びます。

投稿日時 - 2017-08-30 14:30:23

あなたにオススメの質問