Windows¶ ↑
Ruby 支持 Windows 的几个原生构建平台。
-
mswin:使用 Microsoft Visual C++ 编译器和 vcruntimeXXX.dll 构建
-
mingw-msvcrt:使用 Mingw 编译器和 msvcrtXX.dll 构建
-
mingw-ucrt:使用 Mingw 编译器和 Windows Universal CRT 构建
使用 Mingw 和 UCRT 构建 Ruby¶ ↑
最简单的构建环境只是一个标准的 RubyInstaller-Devkit 安装和 git-for-windows。您可能想使用 VSCode 作为编辑器。
构建示例¶ ↑
Ruby 核心开发可以在 Windows cmd
中完成,如下所示
ridk enable ucrt64 pacman -S --needed %MINGW_PACKAGE_PREFIX%-openssl %MINGW_PACKAGE_PREFIX%-libyaml %MINGW_PACKAGE_PREFIX%-libffi cd c:\ mkdir work cd work git clone https://github.com/ruby/ruby cd c:\work\ruby sh autogen.sh sh configure -C --disable-install-doc make
或在 MSYS2 bash
中完成,如下所示
ridk enable ucrt64 bash pacman -S --needed $MINGW_PACKAGE_PREFIX-openssl $MINGW_PACKAGE_PREFIX-libyaml $MINGW_PACKAGE_PREFIX-libffi cd /c/ mkdir work cd work git clone https://github.com/ruby/ruby cd ruby ./autogen.sh ./configure -C --disable-install-doc make
使用 Visual C++ 构建 Ruby¶ ↑
要求¶ ↑
-
Windows 7 或更高版本。
-
Visual C++ 12.0 (2013) 或更高版本。
注意如果您要构建 x64 版本,请使用 x64 的本机编译器。
-
请设置环境变量
INCLUDE
、LIB
、PATH
以便从命令行正确运行所需的命令。注意构建 ruby 需要以下命令。
-
nmake
-
cl
-
ml
-
lib
-
dumpbin
-
-
如果您要从 GIT 源构建,则需要以下命令。
-
patch
-
sed
-
ruby 2.0 或更高版本
您可以使用 scoop 安装它们,如下所示
scoop install git ruby sed patch
-
-
您需要使用 vcpkg 安装所需的库,如下所示
vcpkg --triplet x64-windows install openssl libffi libyaml zlib
-
启用命令行的命令扩展。这是
cmd.exe
的默认行为。如果您要显式启用它,请使用/E:ON
选项运行cmd.exe
。
如何编译和安装¶ ↑
-
在您的构建目录中执行
win32\configure.bat
。您可以将目标平台指定为参数。例如,运行configure --target=i686-mswin32
您还可以指定安装目录。例如,运行configure --prefix=<install_directory>
安装目录的默认值为/usr
。默认的 PLATFORM 在 32 位平台上为i386-mswin32_
MSRTVERSION,在 x64 平台上为x64-mswin64_
MSRTVERSION。MSRTVERSION 是 Microsoft Runtime Library 的 2 位或 3 位版本。 -
如果您要更改可执行文件的名称,请在
Makefile
中更改 RUBY_INSTALL_NAME 和 RUBY_SO_NAME。并添加 RUBYW_INSTALL_NAME 以更改可执行文件(无控制台窗口)的名称(如果您也需要)。 -
您需要指定 vcpkg 目录以使用
--with-opt-dir
选项,如下所示:configure --with-opt-dir=C:\vcpkg\installed\x64-windows
-
如果您从 GIT 源构建,请运行
nmake up
。 -
运行
nmake
-
运行
nmake check
-
运行
nmake install
构建示例¶ ↑
-
在 ruby 源目录中构建。
ruby source directory: C:\ruby build directory: C:\ruby install directory: C:\usr\local
C: cd \ruby win32\configure --prefix=/usr/local nmake nmake check nmake install
-
在 ruby 源目录的相对目录中构建。
ruby source directory: C:\ruby build directory: C:\ruby\mswin32 install directory: C:\usr\local
C: cd \ruby mkdir mswin32 cd mswin32 ..\win32\configure --prefix=/usr/local nmake nmake check nmake install
-
在不同的驱动器上构建。
ruby source directory: C:\src\ruby build directory: D:\build\ruby install directory: C:\usr\local
D: cd D:\build\ruby C:\src\ruby\win32\configure --prefix=/usr/local nmake nmake check nmake install DESTDIR=C:
-
构建 x64 版本(需要本机 x64 VC++ 编译器)
ruby source directory: C:\ruby build directory: C:\ruby install directory: C:\usr\local
C: cd \ruby win32\configure --prefix=/usr/local --target=x64-mswin64 nmake nmake check nmake install
错误¶ ↑
您不能使用包含任何空白字符的路径名作为 ruby 源目录,此限制源自 NMAKE
的 !INCLUDE
指令的行为。
您可以在任何目录中构建 ruby,包括源目录,但源目录中的 win32
目录除外。这是源自 NMAKE
的路径搜索方法的限制。
图标¶ ↑
构建目录中的任何图标文件 (*.ico
)、使用 icondirs make 变量指定的目录和 ruby 源目录下的 win32
目录都将根据其基本名称包含在 DLL 或可执行文件中。$(RUBY_INSTALL_NAME).ico 或 ruby.ico –> $(RUBY_INSTALL_NAME).exe $(RUBYW_INSTALL_NAME).ico 或 rubyw.ico –> $(RUBYW_INSTALL_NAME).exe 其他 –> $(RUBY_SO_NAME).dll
虽然 ruby 源中没有分发任何图标,但您可以使用任何您喜欢的图标。您将能够通过搜索引擎找到许多图像。例如,以下内容来自 Ruby logo kit
-
官方网站中的小 favicon