Wine,编译失败,需要一些建议

Wine,编译失败,需要一些建议

对不起,我的英语不好。

我正在尝试编译克里斯伯尔修补 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

尝试安装 Wine 的所有构建依赖项:

sudo apt-get build-dep wine

如果这仍然不能满足所有依赖关系,您可以尝试我发布的方法/usr/bin/ld:找不到 -lpulse

答案3

我没有使用 Ubuntu(我使用 Fedora 19),但它可能仍然有用。我遵循了此处提供的指导关联。但是有些步骤遗漏了。我会尝试提供更完整的说明:

  1. 请检查以下内容:

    • 运行glxinfo | grep "OpenGL renderer string"应该返回包含的内容Gallium

    • 这个答案假设您已经安装了(常规)Wine,这可以通过运行来完成sudo apt-get install wine

      运行wine --version应该返回或更新的版本wine-1.6-rcX

  2. 安装所有构建依赖项:

    • 梅萨,建造镓九:

      sudo apt-get build-dep mesa
      
    • Wine,构建 wine-d3dadapter9:

      sudo apt-get build-dep wine
      
  3. 首先,让我们构建并安装 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/
      
  4. 然后,我们构建并安装新的 Wine 库:

    • 在以下位置下载相关的 wine-master 分支关联并将该wine-master文件夹解压到您可以找到的地方,例如您的主目录中。

    • 下载d3dadapter9-wip.zipwine-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
      
  5. 配置 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

相关内容