MySQLをC言語から使う

| | コメント(0) | トラックバック(0)

 PerlやPHPからではDBIや内蔵ライブラリ任せで良いのですが、C言語では直接MySQLのライブラリを使用します。

 まずは、必要なヘッダやライブラリがどこにあるかを調べる。
# find / -name mysql.h
/usr/local/src/mysql-5.0.18/include/mysql.h
/usr/local/mysql/include/mysql/mysql.h

# find / -name libmysqlclient.so
/usr/local/src/mysql-5.0.18/libmysql/.libs/libmysqlclient.so
/usr/local/mysql/lib/mysql/libmysqlclient.so

# find / -name libmysqlclient.a
/usr/local/src/mysql-5.0.18/libmysql/.libs/libmysqlclient.a
/usr/local/mysql/lib/mysql/libmysqlclient.a

コンパイル・リンク時に-Iや-Lで指定が必要になります。
# gcc -c -I /usr/local/mysql/include/mysql/ myclient.c
# gcc -o myclient -L /usr/local/mysql/lib/mysql/ -l mysqlclient

一気にやるならこっち
# gcc -o myclient \
-I /usr/local/mysql/include/mysql/ \
-L /usr/local/mysql/lib/mysql/ \
-l mysqlclient \
myclient.c

実際のプログラムに関してはメルマガで紹介しますが、Linuxの場合出来上がったプログラムを使用する際に/usr/local/mysql/lib/mysql/をldconfigで登録しないとだめだったので動的リンクだったかも。
FreeBSDにも同じコマンドがあるのでメルマガ発行前にもう一度検証してみます。

 あと気をつけなければならないのがライセンスの問題。C言語で開発する場合、MySQLのライブラリを取り込む事になります。技術以外のことで揉めるのは好ましく無いので業務用であればさっさと商用ライセンスを購入したほうがよさげです。商用ライセンスを購入しない場合はGPLになりますので開発するプログラムもGPLに違反しないように気をつけなければいけません。この手の開発は基本的に著作財産権は全て顧客に渡すのでソースがどうとか改変がどうのこうのといった問題は出てこないのですが、開発に関して他の商用ライブラリを組み合わせて使用できなくなるため、その可能性はある場合は素直にライセンスを購入します。

 C言語からは外れますが、もう一つライセンスを購入したほうが良い例としてはApacheと組み合わせる場合もあります。全てがオープンソースであれば無問題ですがMySQLをGPLで選択してPHPから利用した場合はコンパイル済みPHPにMySQLのライブラリが組み込まれています。そしてApacheに組み込まれる他のモジュールにオープンソースではない商用製品がある場合はApacheの利用方法がGPL違反となります(ApacheがGPLと商用製品の両方のモジュールにリンクするため)。JavaコネクタはJavaやTomcatとプログラム的に独立していると思うので問題ないかな?。またJDBCはどうかな?Java自身はバイナリのみで配布している製品なのでMySQLとの組み合わせは確認しないといけないかも。(これは後ほどインストールする際に確認します)。Perlに関してはApacheとの関係が独立しているのでApacheのモジュールにMySQLライブラリが組み込まれることはありません。ここがPHPとの大きな違いかな。Perlに商用モジュールを組み込む例は聞いたことが無いのでPHPのようにGPLで騒がれたことがないですね。

トラックバック(0)

このブログ記事を参照しているブログ一覧: MySQLをC言語から使う

このブログ記事に対するトラックバックURL: http://blog.c-production.com/mt/mt-tb.cgi/183

コメントする

このブログ記事について

このページは、管理人が2006年2月19日 19:49に書いたブログ記事です。

ひとつ前のブログ記事は「MySQLの自動起動」です。

次のブログ記事は「電気用品安全法で危機」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

Powered by Movable Type 4.1