任何人都可以阐明对 32 位应用程序的大地址感知 (LAA) 的支持在 Wine 中是如何工作的吗?
我知道在 Windows 中默认情况下,32 位应用程序被限制为最大 2GB RAM;但是,可以在可执行文件上设置 LAA 标志,以允许它最多使用 4GB。
我的理解是,默认情况下,Wine 尊重 32 位 Windows 应用程序的 2GB 限制,如果在 .exe 上设置了 LAA 标志,它将允许使用 4GB。但是,我听说还有一个全局选项可以为 Wine 设置为自动允许所有 32 位 Windows 应用程序使用 4GB - LARGE_ADDRESS_AWARE=1
(或类似的东西?)。
有人可以澄清这是否是正确的环境变量吗?它在 vanilla Wine 中有效,还是仅在 Wine-staging 中有效?在 64 位 Wine 前缀中运行 32 位应用程序时是否也需要它?我以为有一个关于它的 Wine 用户指南页面,但我找不到它。
您可以为尝试在 WINE 下运行的每个 x86 应用程序安装一个补丁,您可以在此处找到该补丁:https ://ntcore.com/?page_id=371
此外,还有一个用于在 PE 文件中设置 LAA 标志的 WINE 补丁。查看 github 中包含的文件的内容,您正在寻找的变量似乎是正确的
LARGE_ADDRESS_AWARE
https://github.com/randomstuff/pe-set-laa。根据这个补丁的创建者,它可以在 WINE 下工作。根据您尝试运行的内容(游戏或可移植可执行文件),某些应用程序的标志有效性似乎存在一些不一致。
如果您想从源代码构建 Wine,您还可以使用此代码在全局上修补 LAA。