2013年10月23日水曜日

OSX Mavericks にしたら gdb と gcc が消えた時の対処法



こんにちは.Mavericksしてますか?
Mavericksにすると人によっては以下の様な問題が観測されるようです.

 (1) gccの動きが変
 (2) gdbが無い

(1)の問題はgccというコマンドがclangのエイリアスになるためです.
gcc と打って clang: no input files 的なエラーが出たらそれはgccの皮を被ったclangです.
clangはなるべくたくさん警告が出るようにしてるらしいので,
今までgcc用に書いてたものをclangでコンパイルすると警告がうざいorエラーが出る可能性があります.
clang自体は速くて良いコンパイラらしいのですが,どうしてもgccが使いたい人は下の解決策へ.

(2)は当たり前ですがgdbが無くなるためです.
gdb無いと困る人は下の解決策へ.


【解決策】
とりあえずCommand line tools(CLT)をインストールしてください.

llvm-gcc-4.2 と打って command not found にならなかったら,
シェルの設定ファイルに alias gcc=llvm-gcc-4.2 と書けばgccが今までと変わらない挙動になります.
無い場合はhomebrewでgccをインストールして,例えばgcc4.9入れた場合は
alias gcc=gcc-4.9 と書けば gcc でgccが使えるようになります.
(ただしllvm-gccに比べてコンパイルがちょっと遅い)

gdbは,CLTインストール後に gdb と打って command not found になったら,
自分でインストールする必要があります.clangだとmakeに失敗するので,
sudo cp /usr/local/bin/gcc-4.9 /usr/bin/gcc
を実行してgccを書き換えたらできました.

【追記】
上の方法でインストールしたgdbをそのまま使うと、『プロセス制御権がないので実行できない』と出ることがあります。その際、sudo gdbでもいいのですが、下記の記事では制御権を与える方法が紹介されています。

Macでgdbにプロセスの制御権を与える handlename's blog

これを実行後Macを*再起動すると、sudoなしで(以前と同じように)gdbできます。

*壁紙がdefaultになるケースが報告されています。注意しましょう。

もっと詳しい原因or解決策が分かったら追記よろしく(ી(΄◞ิ౪◟ิ‵)ʃ)


5 件のコメント :

  1. MacPorts自体がMavericksに対応してなくて困っとる

    返信削除
  2. http://hirozak.blogspot.jp/2013/02/linux-gdb.html
    ここ参考にしたら入れられました!

    でも/usr/bin/gccがclangだとmake失敗するんで,brewでgccインストールしてから
    /usr/bin/gcc を /usr/local/bin/gcc-4.9 で置き換えてからビルドする必要がありそうです

    返信削除
  3. http://alcohorhythm.hatenablog.com/entry/2013/10/24/225431
    ここも良い

    返信削除
  4. gccなくてrailsのgem(therubyracer)が動かない現象がおこりましたが、こちらの情報が鍵となって助かりました。
    コマンドラインツールのインストールがキーでした。
    ありがとうございます!

    返信削除
    返信
    1. お役に立てて光栄です。
      一同代表。

      削除