This post originated from an RSS feed registered with PHP Buzz
by Alan Knowles.
Original Post: 11 libgda on windows 15
Feed Title: Smoking toooo much PHP
Feed URL: http://www.akbkhome.com/blog.php/RSS.xml
Feed Description: More than just a blog :)
1287
I mentioned a while back that my new php extension (dbdo) used libgda, and that i ran into a roadblock, that libgda was not available on windows. Well, after quite a bit of work, that is finally solved.
For those not interested in the how - it's available here libgda for windows
IMPORTANT: must be unzipped to C:\libgda (so providers are in C:\libgda\providers\*.dll)
While I doubt I'll ever personally use the thing, It has been quite interesting building it. After trying out a few compilers (including MSVC, dev-cpp, cygwin) I settled on using mingw and cross compiling on linux. (yes the whole thing is built on linux!), and tested under win4lin.
I did experiment using make/configure, but concluded it was far easier to script the build process in PHP (build.php), there is also a enviroment creator (mkenv.php) which downloads all the necessary components (may need tweaking)
Other than this, there is a little fun involved in getting the mysql backend to build. Based on the instructions on creating a mingW mysql client, you have to follow the windows bit at the bottom, pretty much word for word..
download the mysql libs above
copy the libmySQL.dll to a windows machine, and run the pexports (part of the mingw distro for windows) to get the def file.
copy the defs file to the build same folder as the original .dll
run the dll tool eg. /usr/src/win32mingw/mysql-4.0.21-win/bin/# /usr/src/win32mingw/cross-tools/bin/i386-mingw32msvc-dlltool --input-def libmySQL.def --dllname libmySQL.dll --output-lib libmySQL.a -k
Try running the builder - you get lots of errors like unknown symbol mysql_init@4 ..... mysql_real_connect@16 etc.
edit the defs file manually (change mysql_init to mysql_init@4 - matching the prefixes to the missing symbols
repeat step 4.
if you got all the right @ signs it will build very hapilly.
The other big trick that I spotted from mysql++ was that you need to add -DSYMBOL=int to the gcc lines!! - that's not mentioned anywhere!! :)
Next step is finding if anyone can add dbdo to the build scripts for snaps.php.net