为 Windows 进行 Common Lisp 的交叉编译

主要观点:作者为Raylib绑定库和使用它的游戏Aero Fighter启用了 Windows 支持,过程很顺利,文章介绍了相关步骤。
关键信息:

  • 可从 Linux 交叉编译 C 代码为 Windows 代码,如在 Arch Linux 上安装mingw-w64-toolchain,编译示例 C 代码x86_64-w64-mingw32-gcc hello.c,运行wine./a.exe
  • 可交叉编译 Raylib 并生成.dll文件,设置RAYLIB_LIBTYPE等参数,make PLATFORM_OS=WINDOWS,链接示例 C 代码x86_64-w64-mingw32-gcc hello.c -L"." -lraylib,运行wine./a.exe打开 Raylib 窗口。
  • 安装 SBCL 可下载.msi安装文件,运行wine,默认安装路径$HOME/.wine/drive_c/Program Files/Steel Bank Common Lisp/,可通过wine $HOME/.wine/drive_c/Program Files/Steel Bank Common Lisp/sbcl.exe确认功能,注意*features*列表中有:WIN32:LINUX:UNIX
  • 在 Emacs 中使用基于 Wine 的 SBCL,vend可简化 Windows 设置,vend repl wine运行 SBCL,配置Sly可使用 Wine 中的 SBCL 作为编辑器内 REPL。
  • 可通过load-shared-objects函数加载 Windows DLL 文件,确保.dll文件在合适位置后,可通过写build.lisp文件创建 Lisp 程序的.exe文件,注意 Windows 下 Core Compression 不可用,导致二进制文件较大。
    重要细节:
  • 编译和运行 C 代码的具体命令及示例。
  • Raylib 交叉编译的参数设置和示例代码。
  • SBCL 安装路径及相关操作。
  • Emacs 中使用 Wine 基于 SBCL 的配置和操作。
  • 加载 Windows DLL 文件的函数及参数。
  • 创建 Windows 可执行文件的build.lisp代码及相关注意事项。
阅读 15
0 条评论