質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

88.06%

emacsの使い方について質問です。

解決済

回答 2

投稿 編集

  • 評価
  • クリップ 1
  • VIEW 3,788

score 92

今までHTML、JavaScript、CSSを使ったホームページの作成をemacsで行ってきました。

このemacsでC言語なども実行したいと思ったのですが、

コンパイルの方法や実行結果の表示方法など分かりません。

インターネットで調べてはいるのですが、説明が難しかったり、

仕様が多少違うのか、書いている通りに実行できません。(←調べ方の問題もあると思います...)

分かる方がいましたら、ぜひ教えてください。

また、emacsでは難しい場合は他のエディタでコンパイルなど簡単に実行できるものを教えてください。


使っているには、
emacs-24.2-20121208
emacs-24.5-shared-libgcc-nodebug
です。下側のファイルのbin内のemacsを使っています。
(↑何を書けば使っているemacsのバージョン?が伝わるかの分からかったので、変な書き方だったらスミマセン。この書き方では判断できない場合は訂正しますので連絡お願いします。)

環境はWindowsです。
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 2

checkベストアンサー

+1

EmacsでC言語の勉強は楽しいですよ!
是非チャレンジしてみてください。

質問者様の前提条件(理解)について不明なので、そもそもの部分について情報を記載させていただきます。

・コマンドプロンプトでの「C言語ソースコード作成→リンク/コンパイル」の流れを理解できている
・gdb等のデバッガがインストールされている
・GCC等のC言語コンパイラ及びリンカがインストールされている
・質問者様が、コマンドプロンプトでC言語のソースコードからexeファイルを作成できる
・EmacsそのものにC言語開発のための機能が実装されているわけではない事を理解できている
・特定のプログラミング言語に特化した編集機能(補完、タグジャンプ、Grep、置換え、色付け...etc)はEmacsの設定ファイルに設定しなければ実現できない

という前提条件が必須かなと思います。
Emacsは高機能なので「パソコンにインストールされているコンパイラやリンカ、デバッガをEmacs上で実行できる」という話です。
Emacsは高機能なエディタではありますが、Emacs自身がC言語のソースコードをコンパイルできるわけではありません。

では、EmacsにどうやってC言語のコンパイラやリンカ、デバッガを紐つける(設定する)のか?というところなのですが、Emacsは「Emacs Lisp」と呼ばれるプログラミング言語で設定しなければなりません。
「init.el「や「.emacs.el」といった設定ファイルに、C言語をデバッグ、コンパイルするための設定を記載する必要があります。
しかしながら、EmacsでC言語開発というニーズは先人たちにも当然ながらあった事ですので、標準で設定が準備されています。
※恐らくですがミニバッファでM-x gdb を実行すると「gdbがインストールされてないよ!!」と怒られたりするはずです。(gdbはデバッガアプリです)
※ちなみにコンパイルコマンドは「M-x compile」です。(makeがインストールされてないよ!!)と怒られると思います。

ですので、実現するための参考手順を記載いたします。
申し訳ありませんが、手順の詳細についてはGoogle検索などで補って下さい。

1.コマンドプロンプトでC言語ソースからexeファイルを作成する環境を構築
http://d.hatena.ne.jp/Kojo_Sugita/20080503/1209746003
※環境変数「PATH」に、C:\MinGW\bin;C:\MinGW\msys\1.0\bin を追加するのをお忘れなく。

2.Emacsから、手順1でインストールしたコンパイラ、リンカ、デバッガを実行してみる。
★Emacsを起動
MingwをインストールしてからEmacsを起動すること。
※gcc及びGDBがインストールされていると、Emacs起動時に自動的に環境変数から読み取ってくれる。

★hello.cを任意のフォルダに作成

#include <stdio.h>

void main() {
    printf("hello world!!\n");
}
※上記のお決まりのコードを、Emacsで書いて保存する

★「M-x compile」をミニバッファで実行
hello.cが書けたら、hello.cの編集バッファで「M-x compile」コマンド実行。
「M-x compile」を実行すると、ミニバッファに「make -k」と表示されるので、make -kをBackSpaceキー連打で削除。
削除できたら「gcc hello.c -o hello.exe」と入力しEnterキーを叩く

-*- mode: compilation; default-directory: "d:/kintaka/project/c_lang/00/" -*-
Compilation started at Wed Sep 16 12:01:19

gcc hello.c -o hello.exe

Compilation finished at Wed Sep 16 12:01:19

このように表示されるはず。

★デバッガでステップ実行などやってみたい場合は「M-x gdb」をミニバッファで実行
hello.cの編集バッファで「M-x gdb」を実行。
すると、ミニバッファに「gdb -i=mi a.exe」と入力された状態で表示されるので、「gdb -i=mi hello.exe」に修正しEnterキーを叩く

This GDB was configured as "mingw32".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>...
Reading symbols from d:\kintaka\project\c_lang\00\hello.exe...(no debugging symbols found)...done.
(gdb) 

このようにデバッガのプロンプトが表示されれば成功。
使い方の参考はコチラ → http://write-remember.com/linux/emacs-gdb/


※コンパイラとデバッガがインストールされていれば、標準のEmacs設定で自動的に使えるようになっているはず・・・。
※うまく動かない場合は「Emacs C言語開発」「M-x compile」「M-x gdb」等のキーワードでGoogle検索してみてください。

以上、長文になり申し訳ないです。
楽しんで下さい!!

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

+1

環境(Mac, Windows, Linux)や今まで使われてきたEmacsのWindow有無にもよってくるかと思います。
Emacsの拡張機能としてC言語用の
・入力補完
・文法チェック
・コンパイル、実行
・コード整形
・デバッグ
など様々なパッケージが出ていますのでそれらを利用すると楽だと思います。
パッケージもEmacsバージョン24.2からはダウンロード&インストールも楽になっているので色々触ってみるのも良いと思います。

Window版ではなく、コンソールモードでも不自由は感じていません。軽いですし。
コンソールだけの利用例

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 88.06%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る