对不起,我的英语不好。
我正在尝试编译克里斯伯尔修补 wine 以支持原生 D3D9:https://github.com/chrisbmr/wine/tree/d3dadapter9-wip。我尝试按照 README 文件中的提示进行操作,也尝试编译两者./工具/wineinstall和。/配置,但我不断收到错误:
make[1]: Entering directory `/home/wine-d3dadapter9-wip/dlls/d3d9'
../../tools/winegcc/winegcc -B../../tools/winebuild --sysroot=../.. -fasynchronous-unwind-tables -shared ./d3d9.spec buffer.o d3d9_main.o d3dadapter9.o device.o directx.o query.o shader.o stateblock.o surface.o swapchain.o texture.o vertexdeclaration.o volume.o version.res -o d3d9.dll.so -ldxguid -luuid -ladvapi32 -lgdi32 -luser32 -lwined3d ../../libs/port/libwine_port.a
d3d9_main.o: In function `DllMain':
/home/wine-d3dadapter9-wip/dlls/d3d9/d3d9_main.c:159: undefined reference to `d3dadapter9_destroy'
/home/wine-d3dadapter9-wip/dlls/d3d9/d3d9_main.c:154: undefined reference to `d3dadapter9_init'
collect2: error: ld returned 1 exit status
winegcc: gcc failed
make[1]: *** [d3d9.dll.so] Error 2
make[1]: Leaving directory `/home/wine-d3dadapter9-wip/dlls/d3d9'
make: *** [dlls/d3d9] Error 2
Compilation failed, aborting install.
或者
configure: libOSMesa development files not found (or too old), OpenGL rendering in bitmaps won't be supported.
configure: libd3dadapter9 development files not found. Native Direct3D9 won't be supported.
configure: libhal development files not found, no legacy dynamic device support.
configure: libldap (OpenLDAP) development files not found, LDAP won't be supported.
请给我指明正确的方向。我非常感谢您的帮助。谢谢。
操作系统:Ubuntu13.04,GPU:nvidia 9200m,驱动程序:nvidia xorg 313。
答案1
我现在就亲自尝试一下,让你知道结果如何。
在档案中发现了这一点: http://lists.freedesktop.org/archives/mesa-dev/2013-July/041900.html
它将我引导到 d3dadapter mesa,它应该包含缺失的 libd3dadapter9: https://github.com/chrisbmr/Mesa-3D/tree/gallium-nine
而且其中还包含您已拥有的葡萄酒的链接。
答案2
答案3
我没有使用 Ubuntu(我使用 Fedora 19),但它可能仍然有用。我遵循了此处提供的指导关联。但是有些步骤遗漏了。我会尝试提供更完整的说明:
请检查以下内容:
运行
glxinfo | grep "OpenGL renderer string"
应该返回包含的内容Gallium
。这个答案假设您已经安装了(常规)Wine,这可以通过运行来完成
sudo apt-get install wine
。运行
wine --version
应该返回或更新的版本wine-1.6-rcX
。
安装所有构建依赖项:
梅萨,建造镓九:
sudo apt-get build-dep mesa
Wine,构建 wine-d3dadapter9:
sudo apt-get build-dep wine
首先,让我们构建并安装 gallium-nine d3dadapter9:
下载http://github.com/chrisbmr/Mesa-3D/archive/gallium-nine.zip并将该
Mesa-3D-gallium-nine
文件夹解压到您可以找到的地方,例如您的主目录中。在解压后的文件夹中打开终端
Mesa-3D-gallium-nine
并运行以下命令:CFLAGS="-m32" CXXFLAGS="-m32" ./autogen.sh --prefix=/usr \ --with-gallium-drivers=nouveau,r600,swrast --enable-nine \ --with-gallium-driver-dir="`pwd`/src/gallium/targets/pipe-loader/.libs" \ --enable-debug --enable-texture-float --with-dri-drivers= --disable-dri \ --disable-opengl --disable-egl --disable-vdpau --disable-xvmc --disable-gbm \ --disable-gallium-llvm --enable-32bit --disable-64bit make sudo ln -s "\`pwd\`/lib/gallium/libd3dadapter9.so.0.0.0" /usr/lib/ sudo ln -s "\`pwd\`/lib/gallium/libd3dadapter9.so.0" /usr/lib/ sudo ln -s "\`pwd\`/lib/gallium/libd3dadapter9.so" /usr/lib/ sudo ln -s "\`pwd\`/include/d3dadapter" /usr/include/
然后,我们构建并安装新的 Wine 库:
在以下位置下载相关的 wine-master 分支关联并将该
wine-master
文件夹解压到您可以找到的地方,例如您的主目录中。下载d3dadapter9-wip.zip
wine-d3dadapter9-wip
并解压之前解压文件夹中的目录所有内容wine-master
。选择覆盖现有文件。在文件夹中打开终端
wine-master
并运行以下命令:./configure make for f in d3d9.dll gdi32.dll user32.dll wineps.drv winex11.drv; do sudo mv /usr/lib/wine/$f.so /usr/lib/wine/$f.so.old; sudo ln -s "\`pwd\`/dlls/\`basename -s .dll $f\`/$f.so" /usr/lib/wine/; done
配置 Wine 以使用九个:
- 跑步
regedit
。 - 导航到
HKEY_CURRENT_USER\Software\Wine\Direct3D
。如果不存在,请创建它。 - 创建一个名为 的新 DWORD 值
UseNative
。将其值设置为1
。
- 跑步
有关使用镓九的更多信息,请查看我发布的第一个链接中提供的指导。
答案4
我用了这个技巧,
希望这也能帮助到你们,
转到您的 wine 文件夹并编辑配置文件:使用您的文本编辑器打开。
替换行:
LIBS="-lOSMesa $X_LIBS $X_PRE_LIBS $XLIB -lm $X_EXTRA_LIBS $LIBS"
和
LIBS="-lOSMesa -lGLU -lGL $X_LIBS $X_PRE_LIBS $XLIB -lm $X_EXTRA_LIBS $LIBS"
并添加:
fi
if test "x$ac_cv_lib_soname_OSMesa" = "x"; then :
到:
fi
ac_cv_lib_soname_OSMesa=libOSMesa.so
if test "x$ac_cv_lib_soname_OSMesa" = "x"; then :
然后保存并尝试./configure again
。