【问题标题】:Can't build 32bit Wine on 64bit linux无法在 64 位 Linux 上构建 32 位 Wine
【发布时间】:2012-11-26 15:33:55
【问题描述】:

我正在尝试这样做:
Build 32bit on 64 bit Linux using an automake configure script?
对我不起作用:( 编译酒。我在 config.log 中找到了这个:

configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME "Wine"
| #define PACKAGE_TARNAME "wine"
| #define PACKAGE_VERSION "1.5.19"
| #define PACKAGE_STRING "Wine 1.5.19"
| #define PACKAGE_BUGREPORT "wine-devel@winehq.org"
| #define PACKAGE_URL "http://www.winehq.org"
| /* end confdefs.h.  */
| 
| int
| main ()
| {
| 
|   ;
|   return 0;
| }

配置失败:Cannot build a 32-bit program, you need to install 32-bit development libraries.

【问题讨论】:

    标签: linux


    【解决方案1】:

    Wine wiki 提供了一种在 64 位系统上安装所需 32 位开发库的简单方法,使用 chroot:http://wiki.winehq.org/WineOn64bit

    【讨论】:

    【解决方案2】:

    要在 64 位机器上构建 32 位 wine,您可以使用 LXC(Linux 容器),它是一个操作系统级虚拟化环境,用于运行多个隔离的 Linux 系统。到目前为止,这是最简单的解决方案,因为 Linux(例如 Ubuntu 或 Debian)使构建 32 位 wine 变得困难,因为 64 位系统没有配备完整的 32 位开发库(参见:Bug #990982) .

    所以编译 32 位和 64 位 wine 的基本方法是:

    1. 构建 64 位 wine
    2. 在 lxc 中构建 32 位工具
    3. 在lxc中构建32位wine,参考64位wine和32位工具1.前面步骤中构建
    4. 安装 32 位 wine
    5. 安装 64 位 wine

    在页面Building Biarch (Shared WoW64) Wine On Ubuntu我们可以阅读以下说明:

    1. 安装 64 位先决条件:

      sudo apt-get update
      sudo apt-get build-dep wine
      
    2. 构建 64 位 wine:

      mkdir $HOME/wine64
      cd $HOME/wine64
      ../wine-git/configure --enable-win64
      make -j4
      
    3. 安装 lxc:

      sudo apt-get install lxc
      
    4. 使用 Ubuntu 创建一个名为“my32bitbox”的 32 位容器 模板并将您的主目录绑定到 /home 目录 容器:

      sudo lxc-create -t ubuntu -n my32bitbox -- --bindhome $LOGNAME -a i386
      
    5. 将 apt 配置从主机复制到 lxc 容器:

      sudo cp -R /etc/apt /var/lib/lxc/my32bitbox/rootfs/etc
      
    6. 启动容器;在它给你的控制台登录提示符处,登录 输入您的用户名和密码。

      sudo lxc-start -n my32bitbox
      
    7. 现在您在容器中,在您真正的主目录中。如果你 不在容器中(您没有提示 username@my32bitbox),然后打开一个新终端并:

      sudo lxc-attach -n my32bitbox
      login yourusername+password
      
    8. 现在,您在容器中。做一个Wine的树外构建 正常,只是为了得到工具。您必须安装所有需要的 先决条件。例如:

      sudo apt-get update
      sudo apt-get install python-software-properties git-core
      sudo apt-get build-dep wine
      mkdir $HOME/wine32-tools
      cd $HOME/wine32-tools
      ~/wine-git/configure
      make -j4
      
    9. 仍然在容器内,再做一次,这次指向 64 位构建数据,32 位工具构建工具:

      mkdir $HOME/wine32
      cd $HOME/wine32
      ~/wine-git/configure --with-wine64=$HOME/wine64 --with-wine-tools=$HOME/wine32-tools
      make -j4
      
    10. 还在容器内,安装32位wine强制 最后一点建设:

      cd $HOME/wine32
      sudo make install
      
    11. 当仍在容器内时,将其关闭:

      sudo shutdown -h now
      

      这会让你回到你的真实机器。接下来,您需要 删除所有现有的 Wine 包。您可以通过命令执行此操作 行,但使用 aptitude 或 GUI 之一可能更容易 包管理工具。您将需要 wine-mono、wine-gecko 和 可选的 winetricks 用于您编译的 wine 版本。然而, 这些软件包可能依赖于现有的 wine 安装 可能会强制您删除它们。

    12. 将新建的wine安装到你的真机中:

      cd $HOME/wine32
      sudo make install
      cd $HOME/wine64
      sudo make install
      

      警告:当您安装本地构建的 Wine 版本时, 包管理系统不会知道它的存在,因为它没有 来自一个包裹。因此,以后有可能打破它的 依赖项或安装有冲突的 wine 版本而没有 来自包管理工具的警告。您可以通过以下方式防止这种情况 创建一个包或通过阻止有冲突的包 apt-pinning 通过为包设置“Pin-Priority: -1”。

    13. 接下来,如果需要,安装 Mono、Gecko 和可选的 winetricks 由于对冲突葡萄酒的依赖而删除了他们的包裹 包。

    注意事项:

    • 上述许多命令都需要 root 权限。您的用户帐户需要通过 sudo 访问 root,或者您需要切换到用户帐户。
    • 不必删除您的发行版并“安装”您的编译版本(32 位、64 位)您只需调用适合 Windows 应用程序的个人版 wine。例如:~/wine32/wine32 ~/.wine/path_to_winapp/my_app

    【讨论】:

    • 配置在 32 中找不到 wine-tools
    【解决方案3】:

    我猜你使用的是现在支持多架构的 Ubuntu x64。换句话说,在 64 位系统上,您只能构建 Wine-x64 版本。目前在 Ubuntu 12.04 x64 上构建 32 位 Wine 似乎有问题。

    所以就跑吧:

    ./configure --enable-win64
    

    【讨论】:

      【解决方案4】:
      apt-get install gcc-multilib libasound2-dev:i386 libgsm1-dev:i386 libjpeg8-dev:i386 liblcms2-dev:i386 libldap2-dev:i386 libmpg123-dev:i386 libopenal-dev:i386 libv4l-dev:i386 libx11-dev:i386 libxinerama-dev:i386 libxml2-dev:i386 zlib1g-dev:i386 
      

      apt-get install libcapi20-dev:i386 libcups2:i386 libdbus-1-3:i386 libfontconfig:i386 libfreetype6:i386 libglu1-mesa:i386 libgnutls26:i386 libgphoto2-2:i386 libncurses5:i386 libosmesa6:i386 libsane:i386 libxcomposite1:i386 libxcursor1:i386 libxi6:i386 libxrandr2:i386 libxslt1.1:i386 ocl-icd-libopencl1:i386
      

      让我通过 X 错误。

      【讨论】:

        【解决方案5】:

        你可以解决X错误:

        sudo apt-get install xorg-dev
        

        【讨论】:

          【解决方案6】:

          在 Debian Wheezy 上什么对我有一定的帮助:

          dpkg --add-architecture i386
          apt-get update
          

          启用从 i386 存储库安装

          apt-get install ia32-libs libc6-dev-i386 lib32z1-dev lib32bz2-dev
          

          安装 32 位库。我实际上仍然在使用 X 库时遇到问题:

          configure: error: X 32-bit development files not found. Wine will be built
          without X support, which probably isn't what you want. You will need
          to install 32-bit development packages of Xlib/Xfree86 at the very least.
          Use the --without-x option if you really want this.
          

          但它在技术上是可选的。

          【讨论】:

            【解决方案7】:

            不要那样做。即使在 64 位系统上,Wine 默认为 32 位构建(因为它必须运行 32 位 Windows 程序。)它还同时构建 64 位 Wine。如果你想禁用它,配置它:

            ./configure --disable-win64

            【讨论】:

            • 感谢您的回答,但仍然无法正常工作。我编辑了我的问题并添加了终端输出。您认为我应该安装哪些库?
            • @m93a 所有 Wine 依赖项都需要 32 位开发库。像 libalsa、mesa、x11 等等。我不知道完整列表。
            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2020-08-16
            • 2013-11-14
            • 2016-12-02
            • 1970-01-01
            相关资源
            最近更新 更多