[Rubyinstaller-devel] Building Ruby + extensions with modern Visual C++
wjrogers at gmail.com
Fri Jan 11 21:14:56 EST 2008
There doesn't seem to be any discussion on this list right now, so let
me kick something off. I contacted Curt and Luis earlier this week to
ask what their plans were with regard to migrating the OCI to a new
compiler. Luis seems to be working on a bootstrapping approach using
mingw, which is fine, but I still think that the "best" thing to do
would be to build with the Microsoft compiler on Windows, it being the
native solution and all. Also, according to what I've read, linking
with the newer versions of the MS C runtime has some advantages in
terms of security and stability compared to the old msvcrt.dll that
mingw (and vc6) links to.
I started trying to build everything necessary for the OCI using
VC2005. I quickly realized that finding, installing, updating, and
configuring VC2005 Express is a gigantic pain in the ass. It does not
work with the Platform SDK out of the box, which means you have to
edit some config files by hand to build win32 applications. This is
far from ideal.
Getting set up with VC2008 Express, however, is easy. You just have to
download one file from http://www.microsoft.com/express/ and install
it. Everything works out of the box. I also see some advantage to
using the latest version (it will probably be available for longer, at
So, on to the actual compiling.
I started with Ruby 1.8.6-p111 and zlib. Both build flawlessly with
vc2008. Easy. I continued with openssl, building with NASM 2.00 +
vc2008. I had to copy the nasm.exe binary to nasmw.exe for the openssl
makefile to work, but then it also built fine.
Then I hit readline. Readline is a mess. There isn't really an
up-to-date, well-maintained windows port, as far as I can tell. I
think there needs to be a reliable port of this library to really
depend on the Microsoft compiler. I'm willing to try to learn how to
port it, but I don't really have the existing expertise to do it
quickly. If anyone has some ideas or pointers here, I'm all ears.
What other dependencies does the OCI have? iconv, tcl?
I want to be clear that I'm not challenging Luis's work on the
mingw-based bootstrapping setup. I think it's valuable to work on both
in parallel, to learn more about what's possible. I will have some
time this weekend to work on getting further with the vc2008 builds.
A good night to all,
More information about the Rubyinstaller-devel