IT omoe

ITのこと知らないんですけどIT関連のことを気ままに綴ります

大学の課題を自分のPC環境でやる際に立ちはだかってきた3つの障害

こんにちは.PCの環境って何かとめんどくさいですよね.今回は学校(Linux)の課題を自分のPC(Mac)でやろうとしたときに起こった困ったことを備忘録も兼ねて書いておきたいと思います.
3つの障害とは,以下のようなものです.

  1. 学校で実行できるプログラムが自分のPCで実行できない
  2. displayコマンドが使えない
  3. OSアップデートしたらライブラリーが消えた

ここから順にその原因と対処法を紹介していきたいと思います.

学校で実行できるプログラムが自分のPCで実行できない

経緯

課題にはサンプルコードがあり,それを改変して課題を進めていくという形式でした.で,学校でもらってきたプログラムを自分のPCで実行してみるとエラーが出るんです.しかも改変していない部分で.エラーを見てみると,

「関数内関数なんて使えないよ」

っていう内容でした.学校ではコンパイル通るのに,自分のPCで通らないって...もしかして私のコンパイラ古い?
ってことでgcc -vgccのバージョンを確認.すると,学校のは4.4.7なのに自分のは4.2.1でした.Xcodeを入れたときにデフォで入るバージョンがこれみたいです.調べてみると,4.3くらいで関数内関数が使えるようになったみたいで,予想は当たってたみたい!てことでgccのバージョンをあげることに.

gccのバージョンをあげよう

  1. なんか普通にアップデートしようとしたらエラー出たのでbrewをアップデート
    brew update
  2. tap コマンドで homebrew/versions を追加
    brew tap homebrew/versions
  3. gccのバージョンを検索
    brew search gcc
  4. 入れたいバージョンをインストール(今回は4.9).これは結構時間かかる.
    brew install gcc49
  5. gccのリンクを設定
    sudo ln -s /usr/local/bin/gcc-4.9 /usr/local/bin/gcc
    sudo ln -s /usr/local/bin/g++-4.9 /usr/local/bin/g++

これでできたはず!wgcc -vで確認してみませう.そして,バージョンをあげたらコンパイル通りました.めでたし.
この辺のサイトを参考にしました.

displayコマンドが使えない

経緯

画像処理の課題だったので,できた画像を見たい!って思ったときにdisplayコマンドが使えないってなって悲しい感じになりました.なんかこんなエラーが出るんです.

display: delegate library support not built-in `' (X11) @ error/display.c/DisplayImageCommand/1893.

しかも,よりによってPGMとかPPMとかよくわからないファイル形式なので表示できるアプリケーションが他にないんですね.とりあえずImageMagickは入っているので,新しいアプリを入れるよりImageMagickがちゃんと動くようにした方がいいかな〜と思ってdisplayコマンドがちゃんと機能するように頑張ることにしました.後,コマンドラインから操作できるっていうのがいいですよね.

ImageMagickが動くようにしよう

  1. とりあえずImageMagickをアンインストールしときます.
    brew uninstall imagemagick
  2. Xquartzを入れます.
    brew cask install xquartz
  3. Xquartzを起動して
    export DISPLAY=':0.0'
    brew install imagemagick --with-x11

以上でいけるはずです.display (画像名) & で確認してみましょう.この辺を参考にしました.

OSアップデートしたらライブラリーが消えた

経緯

これは学校のパソコンが云々と言うより,OSをアップデートしてしまったのが悪いのですが,それまでちゃんとコンパイルできていたプログラムがいきなりエラーをはいたんです.何かと思えばstdio.hがないっていうんです.

fatal error: stdio.h: no such file or directory  

確かに,どこを探してもないんです.stdioだけでなく,stdlibなどの基本的なライブラリが消えてしまっていました.

stdio.hを入れよう

  1. 最新のXcodeを入れる
    これは関係あったのかなかったのかわかりませんがとりあえず最新のXcodeをアプリストアから入れました.
  2. Command Line Toolを入れる
    Xcodeを起動し,新規プロジェクトで「Mac OSプログラム>Command Line Tool」
    言語タイプ→「C」
    C言語のテンプレートを使ったプロジェクトが開く→そのままビルド
    「実行するにはCommand Line Toolをインストールする必要があります.インストールしますか?」→「OK」

無事コンパイルできるようになりました.これを参考にしました.

さいごに

そんなこんなで,環境関係のことで色々ごちゃごちゃしてたせいで課題がなかなか進みませんでした.そもそも,なぜこのようなことが起こったのかというと.

  1. gccが古かった
  2. ImageMagickが入っているだけで使える状態ではなかった
  3. むやみにOSをアップデートした

みたいな原因があったわけで,これらの問題は別に学校の環境が云々とかいう前に普段から自分のPCの環境をきちんと管理しておけば済む話だったのではと思いました.具体的には

  1. コンパイラはある程度新しいのにしとこうね
  2. ソフトウェアを入れたときはちゃんと使えるように設定しとこうね
  3. むやみにOSアップデートしないようにね

って感じでしょうか.まあなかなか難しいですけれどもね.