msys 1を使う.0+mingw gcc4.7.1 libodbのコンパイル(C++ORM)


ここで主にlibodbによるsqliteデータベースのサポートを用いる.
(1)コンパイルsqlite 3をダウンロードし、go-sqlite 3をコンパイルしたときにsqlite 3をダウンロードし、そのまま持ってきた.
start msys.bat
gcc -c sqlite3.c -I./inc/sqlite3/
ar crvs libsqlite3.a sqlite3.o
cp libsqlite3.a /d/private/library/lib
cp sqlite3.h /d/private/library/inc/sqlite3
cp sqlite3ext.h /d/private/library/inc/sqlite3
rm libsqlite3.a
rm sqlite3.o

(2)libodbを/d/wxwidgets/wxcode/にダウンロードする
libodb-2.3.0.zip libodbのライブラリ
libodb-sqlite-2.3.0.zip libodbによるSqliteデータベースのサポート
(3)libodbの汎用ライブラリをコンパイルする.
start msys.bat
cd /d/wxwidgets/wxcode/libodb-2.3.0
./configure
make

順調にコンパイルに成功しました.
(4)libodbをコンパイルするsqliteサポート
start msys.bat
cd /d/wxwidgets/wxcode/libodb-sqlite-2.3.0
./configure

ヒントlibsqlite 3は見つからなかった.上のsqlite 3のコンパイル後、ヘッダファイルと静的ライブラリの保存は、msysの基準(またはPOSIX基準またはクラスunix基準)に従って保存されていないからだ.実行./configure--includedir=/d/private/library/inc/sqlite 3または./configure--includedir=/d/private/library/inc/sqlite 3--libdir=/d/private/library/libまたはsqlite 3が見つからないことを示すプロンプトは、次のとおりです.
config.lt: creating libtoolchecking for libsqlite3... noconfigure: error: libsqlite3 is not found; consider using CPPFLAGS/LDFLAGS to specify its location

直接msysで次のコマンドを実行し、--includedirと--libdirパラメータを渡さないと、sqlite 3のチェックがスムーズに通過します.
export CXXFLAGS=-I/d/private/library/inc/sqlite3
export LDFLAGS=-L/d/private/library/lib
./configure

ヒントsqlite 3の1つの特性はオンではなく、コンパイル時にこの特性をオンにする制御マクロが定義されていない可能性がある.または現在のコードのバージョンはlibodbに必要な特性をサポートせず、しばらく無視します.
checking for libsqlite3... yes
configure: WARNING: libsqlite3 is built without sqlite3_unlock_notify support; multi-threaded support will be limited
checking for libodb... no
configure: error: libodb is not found; consider using --with-libodb=DIR
libodbのパスを指定する必要があります
./configure --with-libodb=/d/wxwidgets/wxcode/libodb-2.3.0

その後configureを無事に通過し、makeの直接コンパイルに成功した.
checking for libsqlite3... yesconfigure: WARNING: libsqlite3 is built without sqlite3_unlock_notify support; multi-threaded support will be limitedchecking for libodb... yeschecking whether to use rpath... yes