本頁の目的: TCC fow Windows
この頁では、Windows搭載パソコンに超高速・軽量Cコンパイラ
tiny C compiler (tcc) を
導入する方法を記述します。
本頁の注意事項を理解した上で利用してください。
Mac で使う場合には...
こちら(tcc_mac) を観て下さい。
gccを使う場合には...
- 適当な方法で検索して、適当なパッケージ(例えば mingw-GCC)をインストールして下さい。
- 利用したパッケージが想定しているPATHの場所を確認して下さい。
- 本頁の tcc は gcc と読み替えて、下記「4. 実行環境..」以降の作業を行って下さい。
エラー表示は異なる場合が有ります。
0. コマンドプロンプトが使えることが前提です。
コマンドプロンプトを起動することが出来ない場合には...
WIndows7,XP;
WIndows8.x ;
WIndows10 等を参照するか、
「スタート > プログラムとファイルの検索」 あるいは 「何でも聞いて下さい」で
『cmd』を検索して現れる
アイコンを開く(ダブルクリック)。
1. Windowsの種類を調べる
32bit版 / 64bit版が分からない場合には...
下記のいずれかの方法でお手許の windowsが
32ビットか64ビットかを調べることができます。
- コントロールパネルの システム から判断する。
- コマンドプロンプトの画面で 「echo %PROCESSOR_ARCHITECTURE%」打ち込んで最後に 改行 (またはEnterキー)。
画面上に「x86」があらわれれば32ビット版、「AMD64」か現れれば64ビット版です。
- コマンドプロンプトの画面で 「control system 改行 」 又は 「control.exe /name Microsoft.System 改行 」を打ち込み、
現れた画面の「システムの種類」で32ビット版か64ビット版かを判断できる。
2. インストール先の確保
通常のインストール先は c:\opt\tcc です ( c:\opt の中に ディレクトリtcc を入れます)。
c:\opt\が無い、あるいは分からない場合には ...
コマンドプロンプトの画面で 「mkdir c:\opt 改行 」を打ち込む)。
■ この操作には、管理者権限が必要になる場合が有ります。
失敗した場合には、管理者としてコマンドプロンプトを起動するか、
管理者権限のあるユーザーでログインし直して下さい。
うまく行った場合には、「dir c:\opt 改行」又は「start c:\opt 改行」を打ちこんで、
空のフォルダー c:¥optがあらわれることを確認して下さい。
■ 半角の文字「¥」は
半角の文字「\」
を使わないといけない機種があります、あるいは逆の機種もあります(以下同様)。
3. パッケージの入手
インストーラをダウンロードする。
32ビット版用なら
tcc-0.9.26-win32-bin.zip を、
64ビット版用なら
tcc-0.9.26-win64-bin.zip を
ダウンロードする。
本家
tccのwebページに種々の版があります。
通常は「ダウンロードの表示」または「開く」などで圧縮ファイルが展開され、フォルダ「tcc」が見える。
このパッケージの内容を、「tcc」のフォルダーごと「c:\opt」のフォルダーの中にコピーする。
正しく展開されているか確認するには...
■ コマンドプロンプトの画面で 「dir c:\opt\tcc」または「start c:\opt\tcc」を打ち込んで 改行 (またはEnterキーを押す)すると、
tcc.exe(アプリケーション)のアイコンと、doc, include, lib, libtcc などのフォルダーがあらわれればインストール成功です。
4. 実行環境の設定
環境変数PATHを設定する必要が有ります。
ファイル tcc.exeの入っているディレクトリ(通常は c:\opt\tcc )を追加して下さい。
設定済みリンクファイル
Command_Prompt-tcc を用意しました。
PATHの設定が判らない人は...
以下の方法のいずれかでPATHの追加をして下さい。
リンクファイル
Command_Prompt-tcc
をダウンロードし、デスクトップなどの使いやすいところに置く。
一応通常のインストールのなされたwindowsで、コマンドプロンプト内でのみPATHを有効にする
(コマンドプロンプト以外の副作用の無い)起動用ショートカットリンクを提供します。
windwosの版に依ってはうまく動かないかも...。
以後コンパイラを使うときはこの Command_Prompt-tcc の窓からコンパイラtccを起動して下さい。
フォントのインストール状況によってはこの窓の中の文字が見えにくい場合が有りますが、その場合には このアイコンのプロパティでフォントを
設定し直して下さい(普通は「MSゴシック」が無難)。
4.2 コマンドプロンプトのコピーに追加設定
設定済みリンクファイルが使えない、あるいは
自力で設定できるひとは...
- cmdの起動アイコンから右ボタンで
「ファイルの場所を開く」。
-
現れた
「コマンドプロンプト(ショートカット)」をコピーし、デスクトップ等にペースト。
-
コピーした「コマンドプロンプト(ショートカット)」のプロパティー
(右ボタン)
のリンク先「%windir%¥system32¥cmd.exe」の
後ろに「 /K "path c:¥opt¥tcc;%PATH%"」を追加する。
二重引用符は半角英文字、「/K」の前後と「c:」の前は半角の空白。下線部分は tcc.exe のあるディレクトリ。
-
「Ok」を押したら、次からはこの「コマンドプロンプト(ショートカット)」を使う。
4.3 システム環境設定
コントロールパネルで設定します...
スタートメニュー → Windowsシステムツール → コントロールパネル を開き、
ユーザーアカウント → ユーザーアカウント → 環境変数の変更(左側) で、環境変数PATHの最後に「;c:\opt\tcc」を追加して下さい。
この変更は、間違えるとシステム全体を壊す可能性があります。
環境変数の設定方法は各自で検索して探して下さい。
誤った操作をしない自信が有る方のみが自責を持って行って下さい。
うまく設定が出来れば(コマンドプロンプト内でPATHが c:\opt\tcc に通っていれば)、次からはtccが起動できます。
5. 動作確認
PATHが設定されたコマンドプロンプトの窓で「tcc 改行 」と打ち込んだときに
tcc version 0.9.26 - Tiny C Compiler - Copyright (C) 2001-2006 Fabrice Bellard
Usage: tcc [options...] [-o outfile] [-c] infile(s)...
...中略...
-MF depfile put generated dependencies here
|
などと表示されればインストールは成功です。
gccを使う場合には...
正しくインストールされていれば、「gcc 改行 」で
と表示されると思います。
6. コンパイル
ソースプログラムは予めTeraPadや
サクラエディタなどのエディタで別途作成して下さい。
Windows日本語版では文字コードは シフトjis (SJIS) を使って下さい(OSの設定を変えていない標準の場合)。
OS添付のメモ帳(notepad.exe)は文字コードが勝手に変わることがあるので、原則として使わない。MS-VisualStudioも要注意。
ソースプログラムのファイルがカレントディレクトリにある事が必要です。
確認するには...
コマンドプロンプトで「dir 改行」でファイル名一覧を表示して、
意図したファイルの名前が表示されるはず。
ソースファイルが sample1.c で有れば「type sample1.c改行」でその内容が表示される。
なければ「ファイルが見付かりません」などと表示されるので、「cd ディレクトリ名改行」で
ファイルの保存されているディレクトリにカレントを移る(例)。
ソースファイル sample1.c が有れば、
「tcc sample1.c -o sample1.exe改行」 で実行ファイル sample1.exe に翻訳されます。
具体的には....
- サンプルプログラム(例えば hello.c)を
terapadなどのエディターで作り、 適当なフォルダーの中 (例えば `Documents') に保存して下さい。
- このtcc用の窓で、今現在作業をしている
(カレントの)ディレクトリー
を hello.cを保存した場所に 移動してから作業をして下さい。
「chdir Documents 改行 」若しくは「cd Documents 改行 」など。
- カレントのディレクトリーのファイル一覧は「dir 改行 」で
現れるので、そのファイル(hello.c)が見えるかを確認して下さい。
- コンパイル指示のコマンド「tcc hello.c -o hello.exe 改行 」を打ち込んでコンパイルをしてみて下さい。
- エラーメッセージが出るか、あるいは「dir 改行 」でhello.exeが生成されていれば、コンパイル成功です。
※ tcc.exeの起動は、chdirなどを用いてソースプログラム(例えばhello.c)のある
ディレクトリー 内で行うのが
標準です。コンパイルしたいソースプログラムの
ファイルが今現在作業をしている
(カレントとの)ディレクトリー
にあるかは、「dir 改行 」で
現れるか 確認しながらコンパイルを行って下さい。
` tcc: error: file 'hello.c' not found' が出たときには...
カレントのディレクトリに hello.c が保存されていないということです。
- エディターでファイルの保存場所を Command_Prompt-tccのカレントディレクトリにする
- リンクファイルCommand_Prompt-tccのアイコンからプロパティで ショートカットの「作業フォルダー」を
ソース「*.c」ファイルを通常置くところに設定する
- Command_Prompt-tccの窓のアイコン自体を、hello.cを保存したディレクトリに移す
のいずれかで対処して下さい。
` 'tcc' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。'が出たときには...
C言語のコンパイル用のソフトウェア 'tcc' が見つからないことを示しています。
- tccがインストールされているか、あるいは
- 環境変数PATH が示すフォルダーの tcc.exe のあるフォルダーが含まれているか (PATHが正しくに通っているか)
を確認してください。
- 現在使用している環境の PATH はコマンドプロンプトで「path 改行」と入力することで見ることができます。
- PATHの通っているフォルダーに tcc.exe があるかどうかは、例えば、dir c:\opt\tccなどと書いて、出てきたリストの中にtcc.exeがあるかどうかで確認できます。インストール方法は資料などを再度確認してください。
※ コマンドプロンプトのカレントのディレクトリは「cd 改行」で表示されます。
標準では、その窓の左側に表示されている
`C:\Users\yourName>'の`>'より左側の部分です。
OneDrive問題
ソースファイルがなかなか保存されない、実行ファイルがうまく生成されない...
カレントディレクトリがOneDriveなどのクラウド領域に有る場合には、
設定によって、保存する際の同期や、実行ファイルのウィルスチェックに相応の時間が掛かる、
登録されたアプリケーション以外からのファイル操作が許されていない、などの可能性が有ります。
その場合には、
- まずは本当に意図したディレクトリにファイルを保存しているか、ソースファイルがカレントディレクトリに有るか、をよく調べる。(dirやtypeを使う)
- カレントディレクトリのクラウドの設定を変更・更新する(Windows, Office, OneDriveのアップデートを含む)。一般には、アップデートや設定の全ての項目を適切に指定するのは難しい。
- 自分のPC内 (クラウド領域以外) にプログラミング用のディレクトリを作成して、その中で作業すること。
例えば `C:\opt'の中で「mkdir prog 改行」を行って`prog'ディレクトリを作る;或いは`C:\Users\yourName>'などのホームディレクトリ(コマンドプロンプトを起動して最初に現れるディレクトリ)の中にmkdirで`prog'など作り、その中でプログラムの保存やコンパイルなどの作業をする。
「アクセスが拒否されました。」と表示...
コマンドプロンプトで「type ファイル名 改行」やコンパイルなどを試みると、「アクセスが拒否されました。」と表示される。
エディタのアプリの仕様によっては、編集すると他のソフトがファイルにアクセスできないようにロックする場合が有ります。ファイルを保存して編集内容が反映されるか(dirやtypeで観る)、エディタを終了してからも拒否されるか、を調べてみて下さい。
terapad はその辺りの制約が割と緩いです。
※ また、実行ファイルが起動されていると、実行ファイルの更新(別のコマンドプロンプトの窓でのコンパイルなど)は拒否されます(この現象の場合にはエラーが表示される場合とされない場合が有るので注意)。
7. よくあるトラブル
頻出質問 (FAQ; frequently asked questions) :
よくあるトラブルの対処方法です。
kadai.c:4:11: missing terminating " character
このメッセージは ソースファイル「kadai.c」をコンパイルするときに、4行目
(だいたい11文字目付近)でエラーが見付かりました、という意味です。
そこの11文字付近の二重引用符「”」が足りていない場合に表示されます(普通は二重引用符は対にして使う)。
その他によく見られる具体例を以下に示します:
一般的にコンパイル・実行の操作に関わるエラー....
コンパイラが正しくインストールされている場合に、
コーディング(プログラミング+デバッグ)でありがちなミス。
-
プログラムを変えた(ソースファイルの保存、コンパイル、実行をした)のに、結果が変わらない
プログラムを変えたのに結果が変わらない場合は、プログラムが保存されていないか、コンパイルしているプログラムが編集しているプログラムと異なることが推測されます。
- 保存状態を見るためには、コマンドプロンプトで、「dir 改行」とし、コンパイルしようとしているファイルの更新日時を確認してください。更新日時が直近でなければ、違う場所のファイルを編集しているので、「名前を付けて保存...」などで、カレントディレクトリ(コマンドプロンプトで現在作業中のフォルダ)にファイルを移動してください。
- コマンドプロンプトで 「type ファイル名 改行」でソースファイルを表示して、編集した結果が現在のファイルの内容に正しく反映されているかをを確認して下さい。
-
scanfをしても正しい結果が出てこない。
scanfをしても結果が出てこない場合は、変数の型や指示子、ポインタ指定などを確認してください。
具体的には、「scanf("%lf",&a);」の、%や&が適切でない、
更には、floatなら%f、doubleなら%lf、intなら%dといった、変数と書式記述子の対応関係(型や個数)です。
特に変数名の前の&は忘れやすいので注意してください。
-
sanfやprintfの動作がおかしい。
「l」と「1」を間違わないように!
double型の書式記述子は、%lf(小文字のLと小文字のF)ですので気を付けてください。
-
課題(仕様)の数学関数関連部分で “x, yは整数"と書かれているのは どのような意味か?
x,yは整数型の変数として定義し(整数変数は、制限が有る代わりに誤差が少ない)、
それを数学関数で用いる練習をしましょう、ということです。
特に、数学関数(math.hで定義されている)の多くは、入力がdoubleで出力もdoubleです。従って、
数学関数で整数の変数を使うときは、double型へのキャスト変換やdouble変数への代入を行わないと
正しい値が出ない場合が多いです。
int angle; の時に、「print(..., sin(angle));」ではなく
「print(..., sin((double)angle));」にする、
または別途 float rad; を定義して「rad=angle; print(..., sin(rad));」
とする。
その他にしばしば観られる文法的エラーメッセージの具体例....
tccの場合のエラー表示を例に、
パターン毎に対処法を書きました。
エラーメッセージはコンパイル環境によって異なる場合が有ります。
-
tcc: error: file '*.c' not found
gcc: *.c: No such file or directry
gcc: no input files
ソースファイルがカレントディレクトリにあるはず
なのにコンパイルできない。
- 本当にソースファイルがカレントディレクトリにあるかを先ず調べる:
保存したつもりのファイルの 「プロパティー>>全般>>場所」が
カレントディレクトリと異なっていないか。
- ファイルが有るにも関わらずコンパイルできない場合には、ファイル名がおかしい:
ファイル名は全て半角で 英文字、数字、下線文字、ピリオド
に限ること! 全角(漢字)や、空白、括弧は駄目。
-
tcc: *.c:3: error: unrecognized character \x81
gcc:*.c:3: error: stray '\201' in program
gcc:*.c:3: error: syntax error at '@' token
3行目に使ってはいけない文字がある。特に、変数として使用できる文字(半角に限る)に注意。
大抵は全角文字を使っている。特に空白文字→エディターの「表示>>オプション」で空白文字の表示をさせる と判別できる。
-
',' expected (got "*")
カンマ、「,」があるはずなのに「*」があった、というエラーです。
コンマが期待されている箇所では、関数の引数の数があっていないか、「)」がない場合に良く起こるエラーです。
指定された行数の近くでこれらをもう一度チェックしましょう。
-
tcc: error: undefined symbol 'print'
*:*.c: undefined reference to `print'
printf のfを忘れた。
一般には「`〜’」に記載されている関数がプログラム中に正しく定義されていない、というエラーです。
#includeでその関数の宣言のなされているヘッダーファイル(*.h)が読み込まれているか、
関数名が間違っていないかをチェックしてください。
*.c:4:11: missing terminating " character
二重引用符「"〜"」が対になって居ない。おそらく4行目の「"」を閉じるための相手が居ない。
大抵は近所に、「*.c:5: error: syntax error before "..."」というエラーも出てくる。
-
*.c:10: error: syntax error at end of input
*.c:10: error: identifier expected
*.c:10: error: declaration list expected
プログラムの最後の括弧(多くは「}」)が足りていない,セミコロン区切りなどがおかしい。
中括弧記号「{」や「}」などの対応が取れているか確認してください。
不足が検出されている箇所(この場合は10行目)は、実際に不足している場所よりも
後ろ(例えばプログラムの終わり付近)にあると表示されていることが多い。
プログラムや関数の本体を示す括弧の過不足が、プログラムの最後に発見される
(実際に過不足が10行目ではない)ことも多いです。
-
*.c:6:2: warning: no newline at end of file
プログラムの一番最後が行になって居ない(末尾6行目に改行が無い)。
-
';' expected (got ";")
命令の終了を示す、セミコロン「;」がない、というエラーです。エラーの検出された行の近くで「;」が抜けている命令がないか探してください。
-
*.c:10: error: lvalue expected
*.c:10: error: request for member `#' in something not a structure or union
*.c:10: error: ',' expected (got "$")
*.c:10: error: syntax error before "#"
10行目に有ってはいけない演算子(例えば「$」)などがある、あるいは逆に「#」や「$」、「,」などが
有るべきところに入ってない。これらの指摘された文字の箇所の近くに不正な式・演算子があることも多い。
8. tccの使い方など
tcc.exeの詳細は下記を参考にして下さい。
- tccの作者の頁 の Online Documentation
- 自分でインストールしたマシンの c:\opt\tcc\doc のなかにある tcc-doc か tcc-winXX
- 不明点は tccの著者の頁 の下方にある Linksのなかから解決方法を
探し出して下さい。
c:\opt以外の非標準的な任意のディレクトリ(フォルダー)にtccをインストールすることはできます。ただし、
ディレクトリー名やファイル名に空白文字や日本語文字が入っているとコンパイラが正常に起動しないことがあります。
特に、PATH設定では Command_Prompt-tcc のプロパティーの「ショートカット」の中にある
`c:\opt\tcc'の文字部分(PATH設定の追加)はインストール先に合わせて適宜変更する必要が有ります。
※ 注意事項
本頁では tcc/gcc の使い方をサポートすることは有りません。
上記の操作での動作確認や資料の引用は 2019年4月現在に行っていますが、必ずしも
全ての場合で保証するものでは有りません。
また、システム設定変更などが必要な場合や、
操作を誤ると
ファイルを紛失したりシステムを破損することが有ります。
これらのことを認識した上で、
自己責任で行って下さい。