
Ubuntu日本語フォーラム

ログインしていません。
初めまして。今日初めてubuntu14.04を導入しました。
以下のプログラムを動かそうと思っているのですが、うまくいきません。
http://xawa99.blogspot.jp/2013/04/DoubutsuShougi-CheckState.html
これまでに行ったことは、
1. ソースコードとデータファイルをダウンロードし、展開
→圧縮ファイルはルートディレクトリに入れ、展開すると「dobutsu」ディレクトリができました。
2. ルートディレクトリに「data」ディレクトリを作り、その中に「init.txt」という名の局面ファイルを入れました。
→lsで確認済み
3. 以下を実行
$ sudo apt-get update
$ sudo apt-get install build-essential
4. 以下を実行cd
$ sudo apt-get install gcc
$ sudo apt-get install g++
→気になるのは、なぜかどちらも「保留:1個」と出ます。再起動しても同じです。
5. 以下を実行
#CXX = g++-4.3
#CXX = g++
これ、上のリンクで2つ目の#は抜けてませんか?つけて実行しました。
以上の上で、$ make
をおこなっても、
「make: g++-4.3:コマンドが見つかりませんでした
make: ***[makeAllState.o]エラー127」
と出てしまいます。
おそらくmakeはできていないものと思われますが、何が原因なのでしょうか。
もちろん、この状態で、
$ ./checkState data/init.txt
をやっても成功しません。ご指南いただければ幸いです。
オフライン
参考にされているページ
> http://xawa99.blogspot.jp/2013/04/DoubutsuShougi-CheckState.html
は、Redhat系の Linux で使われている、パッケージ管理システムなので、
そのままでは、Debian 系のパッケージ管理システムを使う Ubuntu では、動作が異なります。
参考ページ : sudo yum update -> update パッケージのインストールまで行う
Ubuntu : sudo apt-get update -> update パッケージのチェックと、データベースの更新まで
その後、 sudo apt-get upgrade で、更新パッケージのインストール
これをしないので
> 「保留:1個」と出ます
となっているような気がします。
> sudo apt-get install build-essential
build-essential は、メタパッケージと言って、ソースをコンパイルすると言った、開発関連で使う主なパッケージをインストールしてくれるものなので、gcc、 g++ は、この操作で、インストールされます。
> #CXX = g++-4.3
> #CXX = g++
設定ファイルとか、makeファイルの、行頭の 「#」 は、コメント化と言って、その行を無視するための指示記号なので
#CXX = g++ 行の、# は、削除します。
オンライン
ご丁寧にありがとうございました。
書き忘れてしまったのですが、Ubuntu関連の補足は、こちらのページに記載されております。
http://xawa99.blogspot.jp/2013/05/DoubutsuShougi-Ubuntu.html
私もうっかりしていたのですが、これによると、
これによると、Ubuntu11では動作し、Ubuntu13ではファイルに若干の修正が求められるようです。
そこで、Ubuntu11(サポート対象外ですね…)を再インストールしてみたのですが、
install update
の段階で大量にエラーが出てしまいます。
install build essential
も同様です。。
そこでUbuntu13で再度トライしてみようと思うのですが、
これはdobutsu.ccをテキストエディターなどで開いて(gedit?)修正する、ということでしょうか。
バグについてはこちらです。
http://xawa99.blogspot.jp/2013/06/DoubutsuShougi-CheckStateBug.html
重ねて、よろしくお願いいたします。
オフライン
> そこでUbuntu13で再度トライしてみようと思うのですが、
単なる、ソースコードのバグであるならば、Ubuntuのバージョンを落とす必要はないと思います。
> これはdobutsu.ccをテキストエディターなどで開いて(gedit?)修正する、ということでしょうか。
はい、該当箇所を修正すれば良いのではないでしょうか。
diff の結果があるので、patch ファイルを作り、それを当てれば良いのですが、それは今後の課題ということで、研究いてみてください。
参照: http://d.hatena.ne.jp/mrgoofy33/20101019/1287500809
オンライン
ありがとうございます。勉強用のページまで示してくださいまして、感謝しております。
勉強させていただこうと思います。
(現在、USBにインストールを試みてやはり不具合が…。慣れません)
話を戻して、makeができない不具合、というのは、ccファイルのエラーとは関係ないのではないでしょうか。
なぜmakeができないのかという最初の問題が分かりません。
そして、
$ ./checkState data/init.txt
を実行したときにエラーが出る(./checkStateというディレクトリはありません、と表示されます)のは、
やはりmakeがうまくいってないからなのでしょうか。
./checkStateというコマンドが、ディレクトリと認識されてしまっているようです。
これはmakeがうまくいけば解決するものなのでしょうか。
makeという概念の問題かと思います。
ご教示頂ければ幸いです。
オフライン
>makeという概念
makeというプログラムはMakefileに書いてあるとおりにコマンドを実行していきます。
ではMakefileに何が書かれてあるかというと、*.hや*.ccという”人間がわかる部品”を”機械がわかる部品”に”何を使って”、どのように翻訳して行けばいいのかということが書かれてあるんです。
それで今回は、”何を使って”という部分にg++-4.3というプログラムを使ってねとMakefileに書いてあったわけです。
ですが、実際にはg++という名前なのでMakefileを修正しないと存在しないもので翻訳を行おうとするからエラーが出ます。
だからMakefileの
CXX = g++-4.3
を
CXX = g++
に書き換えてやらないといけないわけです。
>ccファイルのエラー
ccファイルのエラーというのはエラーというよりも書き忘れに近いのでmakeでエラーが出ることはないはずです。
例えるなら何か機械を組み立てたけれど、中身の歯車がひとつ忘れていたから動かなかったという感じでしょうか?
機械はできた(makeは成功した)けれど動かなかった(実行するとおかしい)ということです。
それで手っ取り早く今回何をすればいいか書きます。
まずターミナルを起動して
g++ -v
と打ち込みましょう。
g++が入っていればバージョンが表示されるはずです。(14.04だと4.8辺りが表示されると思います。)
もし入っていなかった場合は
sudo apt-get install gcc g++
を行ってください。
次に圧縮ファイルを解凍し、できたフォルダにcdしてください。
ここでslさんがおっしゃっている通りpatchを当ててdobutsu.ccを修正します。(もしわからなければ手で修正してもいいですが、おすすめしません)
さらに上のほうで書いたとおりにMakefileを修正します。
最後にmakeをすればうまく行くはずです。
もしうまく行かなかった場合は、dobutsu.ccとMakefileとg++のバージョン、もし入っていなかった場合はsudo apt-get installの部分の結果を提示していただければありがたいです。
オフライン
kogetyanさま
ご丁寧な返信、ありがとうございます。
いまバージョンを変えようとしているところでインストールに問題が発生し、
別トピックでいろいろな方のお知恵を拝借して苦闘しております。
この件、実際に挑戦できるのは、もう少し先(インストールが無事完了して以降)になりそうです。
そののちにはなりますが、いただいたアドバイスをもとに、実行してみようと思っております。
返信が遅くなって恐縮ですが、まだもう少しかかりそうですので、
先に取り急ぎお礼を。。。ありがとうございます!!
オフライン
kogetyanさま
ずいぶん遅くなりましたが…本当にありがとうございました!
無事、プログラムを動かすことが出来ました。
初めてのUbuntuだったこと、市販のソフトなどではなく、バグもあるということで、分からないことだらけでしたが、
結果がうまく出力されたときの感動は言い表せません…。
本当にありがとうございました!
オフライン