コンパイルがうまくいかない時

英語のメッセージを見て、目をそむけないで読む。

(1) 【ファイルの保存やコンパイル】

  1. gcc コマンドを実行するとき、カレントディレクトリに、コンパイルした いファイルがあるか?
    たとえば、gcc -o xyz xyz.c を実行後、ls して、xyz.c は表示されるか?
  2. 自分で作ったプログラムをコンパイルするとき、emacs で編集している (編集した)ファイルと、コンパイル使用としているファイルは同じファイルか? (一見名前が同じでも、ディレクトリが違うかも知れない)
  3. 自分で作ったプログラムをコンパイルするとき、emacs で編集結果を ファイルに保存したか。
    emacs で保存するには C-x C-s と打つ
  4. 実行しているプログラムは確かに自分のコンパイルしたプログラムか?
    カレントディレクトリのプログラムは、./xyz など打つことで、実行する

(2) 【プログラムの内容】

  1. コンパイルの時のメッセージと行番号をよく読む
    メッセージの行番号の前の行やずっと前に間違いがある場合も多い
  2. ld: Undefined symbol というメッセージが出る
    sqrt など数学関数を使っているのに、-lm がない
    関数のスペルが違う
  3. 変数宣言があるか?
    変数は小文字で書くのが原則(大文字小文字は区別される) 書き方やスペルが間違っている
  4. #include #define などの # が行の先頭にあるか?
  5. 文の終りに ; セミコロンはあるか?
    : コロンと間違えている
  6. コメント文が終わっているか?
    */ で閉じる必要がある
  7. 文字列が終わっているか?
    " で閉じる必要がある
  8. スペルミスはないか?
  9. 余分な空白はないか?
  10. プログラム中に全角文字や半角カナが入っていないか?
    全角スペースは見えないので要注意。
  11. 最後の } の後に改行はあるか?
  12. プログラムに全角文字を含めるとき、EUC コードになっているか?
    ip の受講者は、.c のファイルが自動的にEUCになるよう設定してある。
    何らかの理由でそうなっていない場合は、EUC コードに直さなければならない。
    Emacs でのファイルの日本語コードの確認と設定方法
  13. Cの標準ライブラリ関数の使い方を間違っていないか。
    UNIX のオンラインマニュアル検索で調べる。