Cygwin,PostgreSQL,C言語環境設定

作成者 城風敏彦 2007/09/19

まえがき

業務系プログラマーの練習環境としてのCygwinのインストール方法についてのメモです。 業務にデータベースは必須で、CygwinにはPostgreSQLが含まれているという理由からこの組み合わせが良いと思います。Linux,UNIXにも簡単に移行できますし。

B-Fletzなどの高速回線の方は全てのパッケージをインストールでも数十分程度で終わりますが、 ADSLを何十人かで共有という環境の人は、何時間もかかるので使うパッケージだけを選んでインストールしたいでしょう。 ここでは、最低限のエディタvi, コンパイラ gcc,make, データベースPostgreSQL をインストールする方法 について記述します。


インストール前の注意


Cygwin Setupのダウンロード

cygwin.comから Cygwinのセットアッププログラム setup.exeをダウンロードして、 デスクトップに保存します。


Cygwin Setupでのセットアップ

(1)ダウンロードしたsetup.exeを実行します。 Cygwin Setupのバージョンが分かります。

(2)パッケージをダウンロードしてインストールするので、 Install from Internet を選びます。

(3)Cygwinをインストールする場所を指定します。 また、Default Text File Typeはデフォルトのテキストファイルの扱い (改行コードの自動変換)をUnix(LF)と選択します。 Install Forでは、マウントテーブルなどのレジストリ登録の対象を指定します。 inetutilsなどのためにAllにします。

(4)ダウンロードしたパッケージ置き場を指定します。

(5)ダウンロードするときのネットワークの設定を指定します。 Use IE5 Settingを選びます。

(6)パッケージをどこからダウンロードするかを指定します。 できるだけ近くを選びます。良く分からなければ日本の中での 先頭の ftp://ring.aist.go.jp を選びます。

(7)ダウンロードするパッケージを選択します。このままではほとんど何もインストールされません。 全てをインストールする場合は一番上のAllのDefaultをクリックしてInstallにしますが、低速ADSLでは 半日かかることもあるので、以下のように使うものだけインストールします。

(8) +Database Default の+をクリックして postgresqlをチェックする。

(9) +Devel Default の+をクリックして gccとmakeをチェックする。

(10)次に +Editors Default の+をクリックして vim: をチェックする。

(11)パッケージのダウンロードが終わると自動的にインストールします。

(12)Cygwinのシェル(bash)を起動するバッチファイル(cygwin.bat)への ショートカットをデスクトップとスタートメニューに作ります。

で、セットアップは完了!



次は、c言語の開発、実行方法の説明です。
スタート、プログラム(P)、cygwin、cygwin Bash shell を選択する。 デスクトップのcygwinアイコンをクリックしても同じです。

(1)サクラエディタ、メモ帳などのエディタでもC言語ソースを作成することは出来ますが、 ここでは vi を使用して説明します。 まず最初に vi hello.c と書いて新しいファイルを作ります。

(2)この画面では、(3)の画面で表示させる手続きをします。
[例] printf("hello\n"); は(3)の画面で hello と表示させる手続きです。

(3) gcc hello.c でコンパイルする手続きです。
後は、画面のように手続きをすれば hello と表示されます。



次は、c言語を使ったPostgreSQLアプリの開発、実行方法の説明です。


上のように、
export CYGWIN=server
cygserver-config
yes
と入力する。

net start cygserver
で、起動したとメッセージが出る。

initdb -D /var/postgresql/data
で、DBが作成できたとメッセージが出る。

C:\cygwin\var\postgresql\data\pg_hba.conf の一番下の方で
、 host all all 127.0.0.1 255.255.255.255 trust
ではlocalhost(自マシン)からしかつながらないので、
host  all  0.0.0.0  0.0.0.0  trust
と変更する。


postmaster -i -D /var/postgresql/data &
でDBを起動する。

psql template1
でDBの操作ができる。

template1=#に続いて、
create user postgres with password 'password'
で、PostgreSQLのユーザ postgres が作成される。
select * from pg_user;
で、ユーザ一覧が見える。

\q
でpsqlから出ることができる。

Windowsでも、postgresユーザを作成しておく。

http://www.h7.dion.ne.jp/~matsu/feature/postgresql/programing_libpq/connect_nowait.html#1
のCソースを適当なフォルダ(c:/cygwin/home/myhome など)にconnect.c という名前で保存したとする。

gcc connect.c -lpq
が成功すると、a.exe ができる。
./a "host=localhost user=postgres password=password dbname=template1"
と実行すると、




と成功すれば、あとは自作のCプログラムを書いて開発、テストすることができる。
他のマシンにPostgreSQL8以上が入っていて、それを使うだけの場合は、
ダウンロードとCによる開発だけで良いので、LANで一人がんばればあとの人は楽。

最後にSQLによってカーソルに転送されたデータを全て書き出すソースを作ってみる。

showtable.c
が、template1のテーブル名を与えて、そのカラム名と値をダンプするCプログラムである。
gcc showtable.c -lpq

でコンパイルできない時は、以下のようなMakefileを作成してコンパイルすると良い。

all: showtable.c
gcc -o showtable.exe showtable.c -I /usr/include/postgresql/server -lpq
clean:
rm showtable.exe

./showtable pg_user




参考文献

shiro's webに戻る。