Wine编译环境搭建及使用完整流程详细笔记

Wine编译环境搭建及使用完整流程详细笔记

  • 1. 背景及资源文件下载
      • 1.1 背景说明(实现目标)
      • 1.2 VMWare下载地址:
      • 1.3 Debian安装文件地址
      • 1.34 Ubuntu安装文件地址
      • 1.5 Wine源码下载地址
        • 1.5.1 Web下载地址
        • 1.5.2 Git下载地址
  • 2. 常用文档
      • 2.1 Wine Document
      • 2.2 Build Wine Document
  • 3. 清华源配置Apt 包镜像库
  • 4. 安装必要资源包
  • 5. 用debootstrap做环境隔离(可选)
    • 5.1 基本环境安装
    • 5.2 安装编译依赖包
  • 6. 安装docker做环境隔离(可选)
    • 6.1 卸载旧版docker
    • 6.2 允许apt使用https
    • 6.3 下载Docker官方GPG密钥
    • 6.4 添加安装源
      • 6.4.1 先确认系统版本信息
      • 6.4.2 确认处理器和软件的架构信息
      • 6.4.3 编辑apt配置源的文件
    • 6.5 用apt安装docker
    • 6.6 docker下安装debian10系统
    • 6.7 docker下载过慢或卡住问题解决
      • 6.7.1 新建一个docker目录:
      • 6.7.2 添加配置文件到docker目录
      • 6.7.3 将镜像和docker重启
    • 6.8 启动docker下的容器debian
    • 6.9 带界面的docker debian容器
    • 6.10 容器与宿主机文件传输
    • 6.11 docker使用必备需知
      • 6.11.1 查看已创建的容器列表
      • 6.11.2 启动一个已存在容器
      • 6.11.3 进入一个已启动的容器
      • 6.11.4 删除一个已创建的容器
  • 7. 磁盘空间扩展
  • 8. 编译wine源码(32和64位兼容)
    • 8.1 添加32位架构的支持
    • 8.2 安装编译所需的依赖包
    • 8.3 获取wine编译为WoW64
      • 8.3.1 编译64位wine
      • 8.3.2 编译32位wine
  • 9. 使用编译好的wine
    • 9.1 在容器系统中安装wine
    • 9.2 在容器系统中运行winecfg
    • 9.2 在容器系统中运行winetricks(可选)
    • 9.3 通过wine运行一个exe应用程序

1. 背景及资源文件下载

1.1 背景说明(实现目标)

本教程记录的是基于i7CPU的MacBookPro电脑、为了不影响mac系统环境、安装Vmware虚拟机、Vmware上安装的是debian12的系统、基于debian12系统安装了docker、docker容器安装debian10、基于debian10配置编译环境进行编译和测试、可跳跃查看。

1.2 VMWare下载地址:

Linux/Windows:https://www.vmware.com/products/workstation-pro.html
MacOS:https://www.vmware.com/products/fusion.html

1.3 Debian安装文件地址

选择安装64位的系统
https:/www.debian.org/download

1.34 Ubuntu安装文件地址

https://cn.ubuntu.com/download/desktop
如果是Mac M1 M2芯片可以用Ubuntu

1.5 Wine源码下载地址

1.5.1 Web下载地址

https://www.winehq.org/

1.5.2 Git下载地址

https://gitlab.winehq.org/wine/wine

2. 常用文档

2.1 Wine Document

https://www.winehq.org/documentation

2.2 Build Wine Document

https://wiki.winehq.org/Building_Wine#Satisfying_Build_Dependencies

3. 清华源配置Apt 包镜像库

debian和ubuntu的地址:
https://mirrors.tuna.tsinghua.edu.cn/help/debian/
https://mirrors.tuna.tsinghua.edu.cn/help/ubuntu/
Wine编译环境搭建及使用完整流程详细笔记_第1张图片
将下面文件备份后, 上边的deb全部copy到该文件中

sudo mv /etc/apt/sources.list /etc/apt/sources.list.bak
vi sources.list
sudo cp ./sources.list /etc/apt/sources.list

更新apt镜像列表

sudo apt-get update
sudo apt-get upgrade

4. 安装必要资源包

为了使用vmware共享剪切板,先将这两个安装后重启虚拟机

sudo apt install open-vm-tools
sudo apt install open-vm-tools-desktop

5. 用debootstrap做环境隔离(可选)

5.1 基本环境安装

debootstrap是一套基本的系统(根文件系统)。生成的目录符合Linux文件系统标准(FHS),即包含了/boot、/etc、/bin、/usr等等目录,但它比发行版本的Linux体积小很多
安装debootstrap

sudo apt-get install debootstrap
sudo debootstrap --arch amd64 bullseye ~/arch/debian https://mirrors.tuna.tsinghua.edu.cn/debian/
sudo debootstrap --variant=buildd --arch amd64 bullseye ~/arch/debian https://mirrors.tuna.tsinghua.edu.cn/debian/

安装成功后,进入目录切换环境

cd arche/debian
sudo chroot .

有时中文会有问题、以英文环境运行某些命令

env LANGUAGE=en

开启32位支持

dpkg --add-architecture i386

5.2 安装编译依赖包

安装https证书文件

apt install apt-transport-https ca-certificates

修改/etc/apt/sources.list

deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye main contrib non-free
# deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye main contrib non-free

deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye-updates main contrib non-free
# deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye-updates main contrib non-free

deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye-backports main contrib non-free
# deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye-backports main contrib non-free

deb https://security.debian.org/debian-security bullseye-security main contrib non-free
# deb-src https://security.debian.org/debian-security bullseye-security main contrib non-free

更新apt源

apt update

安装依赖包

sudo apt install flex bison gcc make gcc-mingw-w64 libasound2-dev libpulse-dev libdbus-1-dev libfontconfig1-dev libfreetype6-dev libgnutls28-dev libjpeg62-turbo-dev libpng-dev libtiff-dev libunwind-dev libx11-dev libxml2-dev libxslt1-dev libfaudio-dev libgstreamer1.0-dev libmpg123-dev libosmesa6-dev libudev-dev libvkd3d-dev libvulkan-dev libcapi20-dev liblcms2-dev libcups2-dev libgphoto2-dev libsane-dev libgsm1-dev libkrb5-dev libldap2-dev ocl-icd-opencl-dev libpcap-dev libusb-1.0-0-dev libv4l-dev libopenal-dev libjxr-dev libasound2-dev:i386 libpulse-dev:i386 libdbus-1-dev:i386 libfontconfig1-dev:i386 libfreetype6-dev:i386 libgnutls28-dev:i386 libjpeg62-turbo-dev:i386 libpng-dev:i386 libtiff-dev:i386 libunwind-dev:i386 libx11-dev:i386 libxml2-dev:i386 libxslt1-dev:i386 libfaudio-dev:i386 libgstreamer1.0-dev:i386 libgstreamer-plugins-base1.0-dev:i386 libmpg123-dev:i386 libosmesa6-dev:i386 libsdl2-dev:i386 libudev-dev:i386 libvkd3d-dev:i386 libvulkan-dev:i386 libcapi20-dev:i386 liblcms2-dev:i386 libcups2-dev:i386 libgphoto2-dev:i386 libsane-dev:i386 libgsm1-dev:i386 libkrb5-dev:i386 libldap2-dev:i386 ocl-icd-opencl-dev:i386 libpcap-dev:i386 libusb-1.0-0-dev:i386 libv4l-dev:i386 libopenal-dev:i386 libjxr-dev:i386

如果在执行 configure时有如下错误提示:

configure: error: Cannot build a 32-bit program, you need to install 32-bit development libraries.

还需要安装如下库后再次执行

apt-get install gcc-multilib g++-multilib

再次执行 configure

configure: Finished.  Do 'make' to compile Wine.

6. 安装docker做环境隔离(可选)

6.1 卸载旧版docker

不确定是否已经安装过,必须先尝试卸载旧版

sudo apt-get remove docker docker-engine docker.io containerd runc

6.2 允许apt使用https

apt install \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg \
    lsb-release

6.3 下载Docker官方GPG密钥

先安装curl再用curl下载

sudo apt-get install curl
curl -fsSL https://download.docker.com/linux/debian/gpg | gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

6.4 添加安装源

6.4.1 先确认系统版本信息

cat /etc/os-release 

可以看到code name:bullseye

PRETTY_NAME="Debian GNU/Linux 11 (bullseye)"

也可以通过lsb-release -a命令来查看
Wine编译环境搭建及使用完整流程详细笔记_第2张图片

6.4.2 确认处理器和软件的架构信息

uname -a

如果下列i686或者i386, 就说明是32位系统,下边的步骤不用看了,你可以考虑用vmware,选择64位架构重新安装系统,也可以找其它的32位安装的方式、如果是Mac M1/M2的芯片、需要安装Arm版本、本文不做介绍;

Linux debian 5.10.0-23-686-pae #1 SMP Debian 5.10.179-1 (2023-05-12) i686 GNU/Linux

如果是x86_64(amd64)的系统,恭喜你,一切安装流程将更加顺利
在这里插入图片描述

6.4.3 编辑apt配置源的文件

编辑sudo vi /etc/apt/sources.list文件,最后一行添加阿里云的镜像,其中的arch是cpu架构,sign-by是6.3节下载的密钥路径

deb http://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye main contrib non-free
deb http://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye-updates main contrib non-free
deb http://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye-backports main contrib non-free
deb http://security.debian.org/debian-security bullseye-security main contrib non-free

deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://mirrors.aliyun.com/docker-ce/linux/debian/ bullseye stable

添加完成后,执行更新命令

sudo apt-get update

显示结果如下:

获取:1 https://mirrors.tuna.tsinghua.edu.cn/debian bookworm InRelease [147 kB]
获取:2 https://mirrors.tuna.tsinghua.edu.cn/debian bookworm-updates InRelease [52.1 kB]
获取:3 https://mirrors.tuna.tsinghua.edu.cn/debian bookworm-backports InRelease [49.7 kB]
获取:4 https://mirrors.tuna.tsinghua.edu.cn/debian bookworm/main amd64 Packages [8,904 kB]                    
命中:5 https://security.debian.org/debian-security bookworm-security InRelease    

6.5 用apt安装docker

apt install docker-ce docker-ce-cli containerd.io

6.6 docker下安装debian10系统

搜索docker下的debian镜像

sudo docker search debian

Wine编译环境搭建及使用完整流程详细笔记_第3张图片

下载debian10的镜像文件

sudo docker pull debian:10

在这里插入图片描述

6.7 docker下载过慢或卡住问题解决

docker下安装debian10系统如果在国内可能会出现下载过慢或卡住不动的情况,这时我们可以替换阿里的镜像

6.7.1 新建一个docker目录:

sudo mkdir -p /etc/docker

6.7.2 添加配置文件到docker目录

在这个目录里daemon.json文件配置一个阿里云的镜像加速地址:

sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://mjpmak3l.mirror.aliyuncs.com"]
}
EOF

6.7.3 将镜像和docker重启

sudo systemctl daemon-reload
sudo systemctl restart docker

重启后可以用docker pull尝试再次下载, 就可以成功了

6.8 启动docker下的容器debian

启动镜像文件debian:10,会得到容器编号

sudo docker run -itd debian:10 /bin/bash

查看debian10在容器中的情况

sudo docker ps

使用attach命令进入容器(也可以使用ssh、nsenter、exec)

sudo docker attach ada5094c89419e344b727d7d053fc9bd384a10265b0fc0e12008ed25281dc368

下边是运行效果截图、可以看到我们进入容器后系统的版本信息
Wine编译环境搭建及使用完整流程详细笔记_第4张图片
退出容器可以用 exit 命令

但是这样做并不是我们想要的,因为当电脑重启后,容器中的配置和内容会全部丢失,因些我们需要创建与宿主机关系的卷,来达到宿主机重启后保留容器内的数据和配置
首先我在宿主机创建了docker_debian10,在容器debian10中创建了project目录,用如下方式启动使之关联:

docker run -itd -v /home/xuanwenchao/docker_debian10:/project debian:10 /bin/bash

然后再次进入容器中的debian10系统
在这里插入图片描述

6.9 带界面的docker debian容器

docker run -it -e DISPLAY=$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix -v /home/xuanwenchao/docker_debian10:/project debian:10 /bin/bash

解释说明:

-it:以交互式模式运行容器并分配一个终端。
–rm:容器退出后自动删除容器。(这里不添加这个参数)
-e DISPLAY=$DISPLAY:将宿主机的 DISPLAY 环境变量传递给容器,用于 X11 转发。
-v /tmp/.X11-unix:/tmp/.X11-unix:将宿主机的 X11 服务器套接字目录映射到容器内的相同路径,以便容器可以显示图形界面。
-v /home/xuanwenchao/docker_debian10:/project:将宿主机的 /home/xuanwenchao/docker_debian10 目录映射到容器内的 /project 目录,以便容器可以访问该目录下的文件。
debian:10:使用 debian:10 镜像。
/bin/bash:在容器内执行 Bash 终端。

为容器安装必要的X11服务器工具包

apt update
apt install -y xauth x11-apps
apt install -y x11-xserver-utils
export DISPLAY=:0
xhost +local:root

解释说明:

xauth 是 X Window System 的授权机制,用于控制 X 服务器和客户端之间的身份验证和授权。它通过生成和管理授权数据来确保安全访问 X 服务器。

x11-apps 是一个包含多个 X11 应用程序的软件包。这些应用程序提供了一些基本的图形界面工具和实用程序,如终端模拟器、时钟、绘图工具等,用于在 X Window System 环境中进行交互和操作。

安装 xauth 和 x11-apps 可以提供必要的工具和支持,使得在 X Window System 下的图形界面环境中能够正常运行和交互。这些工具对于需要使用图形界面的应用程序或执行一些与 X11 相关的操作非常有用。

xhost +local:root 是一个 X Window System 的命令,用于允许本地 root 用户通过 X 协议访问 X 服务器。通过执行这个命令,X 服务器会将本地 root 用户添加到访问控制列表(Access Control List,简称 ACL),从而允许其连接和显示图形界面。

安装成功后,在容器内执行如下命令、可以测试一下

xeyes

看到如下效果就是成功了
Wine编译环境搭建及使用完整流程详细笔记_第5张图片
如果宿主机重新启动时,再次进入容器之前,确保x11服务器可访问

xhost +

使用xhost +命令开放X11服务器的访问权限

6.10 容器与宿主机文件传输

为容器debian10制作新的sources.list文件,并将文件copy到容器的debian系统中

sudo docker cp ./sources.list ada5094c89419e344b727d7d053fc9bd384a10265b0fc0e12008ed25281dc368:/etc/apt/sources.list

结果显示如下

Successfully copied 2.56kB to ada5094c89419e344b727d7d053fc9bd384a10265b0fc0e12008ed25281dc368:/etc/apt/sources.list

6.11 docker使用必备需知

docker容器第一次启动成功后,这个容器就创建好了,不需要每次重新创建一个新的容器

6.11.1 查看已创建的容器列表

docker ps -a

在这里插入图片描述

6.11.2 启动一个已存在容器

docker start 

6.11.3 进入一个已启动的容器

sudo docker attach 

6.11.4 删除一个已创建的容器

sudo docker rm 

7. 磁盘空间扩展

在编译之前一定要提前确认是否有足够的磁盘空间, 如果可用空间少于5G最好提前做好扩展,虚拟机默认分配20G,如果编译过程中发现空间不足很尴尬,会导致系统启动出错、就像下图这样:

Wine编译环境搭建及使用完整流程详细笔记_第6张图片

如果想要不丢失数据扩展vmware/debian12的磁盘空间,首先要在vmware中操作,我将原来的20G扩大到35G
Wine编译环境搭建及使用完整流程详细笔记_第7张图片
但是扩展之后,启动debian12系统、你依然可以看到可用空间没有变化
使用sudo fdisk -l 命令查看当前状态

sudo fdisk -l

可以看到空间没有变化、有一行红色的提示语、意思是说: GPT(GUID 分区表)中的 PMBR(Protective MBR)大小不匹配。PMBR 是用来保护 GPT 的主引导记录(Master Boot Record),以防止意外修改或破坏分区表,说白了,就是后来增加的空间没有被用上。
Wine编译环境搭建及使用完整流程详细笔记_第8张图片
输入sudo fdisk

sudo fdisk /dev/sda

进入fdisk的命令行模式,输入m显示帮助菜单
Wine编译环境搭建及使用完整流程详细笔记_第9张图片
输入p查看当前的分区表、当前有三个分区sda1、sda2、sda3
Wine编译环境搭建及使用完整流程详细笔记_第10张图片
为了不影响现有系统中的数据、只能创建一个新的分区、输入n ,前边有三个分区、新的分区编号用4、然后需要告诉起动和结束的sector位置、如果想全部空间都用上就直接回车就可以了、创建完成后再次输入p 可以看到分区有四个了、输入w保存分区退出。
Wine编译环境搭建及使用完整流程详细笔记_第11张图片
接下来对新创建的分区进行格式化
Wine编译环境搭建及使用完整流程详细笔记_第12张图片
接下来走一波操作就可以成功了;

在设备 /dev/sda4 上创建物理卷(Physical Volume)。

sudo pvcreate /dev/sda4 

将 /dev/sda4 分区添加到逻辑卷组 debian-vg 中:

sudo vgextend debian-vg /dev/sda4

扩展 debian-vg 卷组中的逻辑卷 root,以利用新添加的分区空间:

sudo lvextend -r -l +100%FREE /dev/debian-vg/root

下边的运行的效果图
Wine编译环境搭建及使用完整流程详细笔记_第13张图片
再次查看可用空间、可以看到扩展成功了
Wine编译环境搭建及使用完整流程详细笔记_第14张图片

8. 编译wine源码(32和64位兼容)

8.1 添加32位架构的支持

因为当前是64位系统、首先添加对32位架构的支持,注意如果容器中只有一个root用户,不用添加sudo

sudo dpkg --add-architecture i386
sudo apt update

运行效果如下:
Wine编译环境搭建及使用完整流程详细笔记_第15张图片

8.2 安装编译所需的依赖包

按官方文档给出的信息:https://wiki.winehq.org/Building_Wine
Wine编译环境搭建及使用完整流程详细笔记_第16张图片
Wine编译环境搭建及使用完整流程详细笔记_第17张图片
执行批量安装命令

sudo apt install flex bison gcc make gcc-mingw-w64 libasound2-dev libpulse-dev libdbus-1-dev libfontconfig1-dev libfreetype6-dev libgnutls28-dev libjpeg62-turbo-dev libpng-dev libtiff-dev libunwind-dev libx11-dev libxml2-dev libxslt1-dev libfaudio-dev libgstreamer1.0-dev libmpg123-dev libosmesa6-dev libudev-dev libvkd3d-dev libvulkan-dev libcapi20-dev liblcms2-dev libcups2-dev libgphoto2-dev libsane-dev libgsm1-dev libkrb5-dev libldap2-dev ocl-icd-opencl-dev libpcap-dev libusb-1.0-0-dev libv4l-dev libopenal-dev libjxr-dev libasound2-dev:i386 libpulse-dev:i386 libdbus-1-dev:i386 libfontconfig1-dev:i386 libfreetype6-dev:i386 libgnutls28-dev:i386 libjpeg62-turbo-dev:i386 libpng-dev:i386 libtiff-dev:i386 libunwind-dev:i386 libx11-dev:i386 libxml2-dev:i386 libxslt1-dev:i386 libfaudio-dev:i386 libgstreamer1.0-dev:i386 libgstreamer-plugins-base1.0-dev:i386 libmpg123-dev:i386 libosmesa6-dev:i386 libsdl2-dev:i386 libudev-dev:i386 libvkd3d-dev:i386 libvulkan-dev:i386 libcapi20-dev:i386 liblcms2-dev:i386 libcups2-dev:i386 libgphoto2-dev:i386 libsane-dev:i386 libgsm1-dev:i386 libkrb5-dev:i386 libldap2-dev:i386 ocl-icd-opencl-dev:i386 libpcap-dev:i386 libusb-1.0-0-dev:i386 libv4l-dev:i386 libopenal-dev:i386 libjxr-dev:i386

20230725 VERSION

apt install gcc-multilib gcc-mingw-w64 libasound2-dev libpulse-dev libdbus-1-dev libfontconfig-dev libfreetype-dev libgnutls28-dev libgl-dev	libunwind-dev	libx11-dev libxcomposite-dev libxcursor-dev
libxfixes-dev libxi-dev	libxrandr-dev libxrender-dev libxext-dev	libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libosmesa6-dev	libsdl2-dev	libudev-dev	libvulkan-dev	libcapi20-dev	libcups2-dev libgphoto2-dev libsane-dev	libkrb5-dev	samba-dev	ocl-icd-opencl-dev	libpcap-dev	libusb-1.0-0-dev libv4l-dev	libxxf86vm-dev libxinerama-dev gcc-multilib:i386 gcc-mingw-w64:i386 libasound2-dev:i386 libpulse-dev:i386 libdbus-1-dev:i386 libfontconfig-dev:i386 libfreetype-dev:i386 libgnutls28-dev:i386 libgl-dev:i386	libunwind-dev:i386	libx11-dev:i386 libxcomposite-dev:i386 libxcursor-dev:i386 libxfixes-dev:i386 libxi-dev:i386	libxrandr-dev:i386 libxrender-dev:i386 libxext-dev:i386	libgstreamer1.0-dev:i386 libgstreamer-plugins-base1.0-dev:i386 libosmesa6-dev:i386	libsdl2-dev:i386	libudev-dev:i386	libvulkan-dev:i386	libcapi20-dev:i386	libcups2-dev:i386 libgphoto2-dev:i386 libsane-dev:i386 libkrb5-dev	samba-dev:i386	ocl-icd-opencl-dev:i386	libpcap-dev:i386	libusb-1.0-0-dev:i386 libv4l-dev:i386	libxxf86vm-dev:i386 libxinerama-dev:i386	

然后就等待安装完成
Wine编译环境搭建及使用完整流程详细笔记_第18张图片

8.3 获取wine编译为WoW64

WoW64(Windows 32-bit on Windows 64-bit)是一种Windows操作系统的子系统,它允许在64位版本的Windows操作系统上运行32位的应用程序和系统组件。它为兼容性目的而设计,以确保32位的应用程序能够在64位的Windows操作系统上正常运行。

创建两个新的目录,分别是win32和win64,安装git获取代码,将wine完整的代码分别copy一份到新目录中

apt install git
git clone https://gitlab.winehq.org/wine/wine
mkdir win64
mkdir win32
cp -a ./wine ./win64
cp -a ./wine ./win32

8.3.1 编译64位wine

因为64位所需的依赖包与32位是不一样的,因此每次编译不同架构版本之前,需要重新安装依赖包
同时将不需要依赖包删除掉

cd win64/wine
apt install libgstreamer-plugins-base1.0-dev libsdl2-dev
apt autoremove

执行configure查看结果是否有错误

./configure --enable-win64

Wine编译环境搭建及使用完整流程详细笔记_第19张图片
如果执行configure没有错误、就可以make了,为了提高编译速度,编译前可以使用lscp命令确认CPU的核心数量

lscpu

Wine编译环境搭建及使用完整流程详细笔记_第20张图片
如果Cpu(s)显示数量为1则说明只有一个内核,如果硬件是多核的,这个值可以用vmware来自行分配

Wine编译环境搭建及使用完整流程详细笔记_第21张图片

如果是多核可以使用 make -jN 命令提高编译速度

make -j2

Wine编译环境搭建及使用完整流程详细笔记_第22张图片

8.3.2 编译32位wine

查询本机架构:

dpkg --print-architecture
amd64

打开本机多架构支持:

dpkg --print-foreign-architectures
i386

添加i386架构并更新:

sudo dpkg --add-architecture i386
sudo apt-get update
sudo apt-get upgrade
apt-get install gcc-multilib g++-multilib

因为64位所需的依赖包与32位是不一样的,因此每次编译不同架构版本之前,需要重新安装依赖包
同时将不需要依赖包删除掉

cd ../../win32/wine
apt install libgstreamer-plugins-base1.0-dev:i386 libsdl2-dev:i386
apt autoremove 

编译32位版本wine时通过–with-wine64参数,指定了已编译完成的wine64位的目录,这样编译32位wine时,程序会注入64位版本处理32位程序所需的库, 如果不需要64位的,就不加任何参数就可以,执行configure查看结果是否有错误

./configure --with-wine64=/project/win64/wine

Wine编译环境搭建及使用完整流程详细笔记_第23张图片
执行make编译32位wine,需要一点时间…

make -j2

Wine编译环境搭建及使用完整流程详细笔记_第24张图片

9. 使用编译好的wine

9.1 在容器系统中安装wine

在win32/wine目录下执行安装命令、再到win64/wine下执行安装命令

make install
cd ../../win64/wine
make install

9.2 在容器系统中运行winecfg

安装完成后首选需要执行winecfg来配置环境

winecfg

配置会先在容器系统中安装Mono
Wine编译环境搭建及使用完整流程详细笔记_第25张图片
Mono 是一个开源的实现了 Microsoft .NET Framework 的跨平台框架。在 Wine 中,可以使用 Mono 来运行和支持基于 .NET 的应用程序。

执行 winecfg MONO 命令会打开一个专门用于配置 Mono 的窗口。

如果未检测到wine-gecko还会继续安装,容器中已经包含了,所以不需要安装了,

安装界面关闭重新回到命令行状态,再次输入winecfg 会出现Wine configuration配置界面。
Wine编译环境搭建及使用完整流程详细笔记_第26张图片
配置Windows版本:在 “Applications” 选项卡中,选择合适的Windows版本,以匹配你要运行的应用程序的要求。

配置图形选项:在 “Graphics” 选项卡中,根据你的系统和需求,调整图形设置。你可以选择启用或禁用桌面集成、允许窗口管理器控制窗口和启用虚拟桌面等选项。

配置音频选项:在 “Audio” 选项卡中,选择合适的音频驱动程序,以确保应用程序在 Wine 环境中正确地播放声音。

配置库文件:在 “Libraries” 选项卡中,你可以添加或修改特定的库文件设置,以解决应用程序在 Wine 中的依赖关系或兼容性问题。例如,你可以添加某些 DLL 文件来模拟 Windows 环境中缺失的库。

配置外观和行为:在 “Desktop Integration” 和 “Staging” 选项卡中,你可以根据个人偏好进行设置,以改变 Wine 窗口的外观、行为和性能。

也可以先用默认的什么都不配置。

9.2 在容器系统中运行winetricks(可选)

首先通过apt安装winetricks然后再运行

apt-get install winetricks
winetricks

Wine编译环境搭建及使用完整流程详细笔记_第27张图片
Wine编译环境搭建及使用完整流程详细笔记_第28张图片

Winetricks并不是必须执行的步骤,但它是一个非常有用的工具,可以帮助你安装和配置一些常见的 Windows 组件、运行库和其他必要的依赖项,以提高在 Wine 环境下运行 Windows 程序的兼容性和性能。

使用 Winetricks,你可以轻松地安装和配置诸如 DirectX、.NET Framework、Visual C++ 运行库等常见的 Windows 组件。这些组件对于许多 Windows 程序的正确运行是必要的。

有明确目标需要时、可以通过winetricks来尝试解决。

9.3 通过wine运行一个exe应用程序

我下载了一个Notepad++的exe应用程序,我们先尝试一下运行:

root@e47effab5c82:/project# wine Notepad++_12_10031411.exe 

可以看到如下错误信息:

008c:fixme:hid:handle_IRP_MN_QUERY_ID Unhandled type 00000005
008c:fixme:hid:handle_IRP_MN_QUERY_ID Unhandled type 00000005
008c:fixme:hid:handle_IRP_MN_QUERY_ID Unhandled type 00000005
008c:fixme:hid:handle_IRP_MN_QUERY_ID Unhandled type 00000005
0024:err:winediag:ntlm_check_version ntlm_auth was not found. Make sure that ntlm_auth >= 3.0.25 is in your path. Usually, you can find it in the winbind package of your distribution.
0024:err:ntlm:ntlm_LsaApInitializePackage no NTLM support, expect problems
0110:fixme:ver:GetCurrentPackageId (0350FEF0 00000000): stub
0024:fixme:richedit:editor_handle_message EM_SETLANGOPTIONS: stub
X Error of failed request:  BadValue (integer parameter out of range for operation)
  Major opcode of failed request:  130 (MIT-SHM)
  Minor opcode of failed request:  3 (X_ShmPutImage)
  Value in failed request:  0x2de
  Serial number of failed request:  276
  Current serial number in output stream:  284

因为缺少NTLM的支持、所以无法启动
Debian 系统中,你可以运行以下命令安装 winbind 软件包,该软件包通常提供了 ntlm_auth 工具:

apt install winbind

安装成功后再次尝试启动exe

wine Notepad++_12_10031411.exe 

可以看到安装向导界面已经出现了
Wine编译环境搭建及使用完整流程详细笔记_第29张图片
Wine编译环境搭建及使用完整流程详细笔记_第30张图片

Wine编译环境搭建及使用完整流程详细笔记_第31张图片
exe应用程序已经成功启动了。

你可能感兴趣的:(Wine,笔记)