Misc #21570
openWindows: Static compilation struggles
Description
Hi, I'm trying to make static Ruby binaries and I've discovered several issues in the Windows building process:
- The
GNUMakefile
is trying to generate a ruby.exp file. It uses dllwrap leading to a failure since this is deprecated and exits with non-zero. (The ruby.exp file looks unnecessary for the compilation process). - The generation of encoding (src/enc) files seem to be missing RUBY_EXPORT define and -lonig
- The openssl extconf.h is missing RUBY_EXPORT define.
- All the bundled gems are missing RUBY_EXPORT define and -lgmp
Also, the makefile is making some mess with the static and shared library file. It forces me to add lib=arc
in rbinstall.rb
so make install can work.
Here's the commands I ran for that result:
ridk enable ucrt64
sh ./src/autogen.sh
cd build
sh ../src/configure -C --disable-install-doc --disable-dln -disable-install-rdoc --disable-install-capi --with-static-linked-ext --disable-shared --disable-yjit --disable-rjit --enable-load-relative --with-parser=parse.y --prefix=C:/Projet/ruby/build/install
make
make install
I used the Ruby 3.4.5 archive from https://www.ruby-lang.org/en/downloads and mostly followed this doc https://github.com/ruby/ruby/blob/master/doc/windows.md#building-ruby-using-mingw-with-ucrt by simply adding the static spices.
In the end I was able to generate the .a files and a ruby.exe file but I had to do a ton of manual changes to achieve this result ^^.
Note: I have tried to use gcc or ldd to get the .exp file but they only make an empty .def file.
No data to display