Wine的编译方法

下载Wine源码

# 如果只是使用wine,就选择下载不带git的wine源码。
wget https://github.com/wine-mirror/wine/archive/refs/heads/master.zip && unzip master.zip && mv wine-master wine

# 如果要回溯wine或者维护补丁,就选择下载带git的wine源码。
# git clone git://source.winehq.org/git/wine.git ~/wine

配置国内源

依赖包括编译依赖和运行依赖。

配置ubuntu20.04清华源:

sudo vim /etc/apt/sources.list.d/1.list
deb https://mirrors.ustc.edu.cn/ubuntu/ focal main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ focal-updates main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ focal-backports main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ focal-security main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ focal-proposed main restricted universe multiverse
sudo dpkg --add-architecture i386 && sudo apt update

安装依赖

手动安装依赖,以下是编译依赖+64位运行依赖+32位运行依赖:

sudo apt install gcc-multilib g++-multilib flex bison gcc make gcc-mingw-w64 libasound2-dev libpulse-dev libdbus-1-dev libfontconfig1-dev libfreetype6-dev libgnutls28-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  libasound2-dev:i386 libpulse-dev:i386 libdbus-1-dev:i386 libfontconfig1-dev:i386 libfreetype6-dev:i386 libgnutls28-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 libjpeg-turbo8-dev libjpeg-turbo8-dev:i386 libxcomposite-dev libxcomposite-dev:i386 libc6-i386

自动安装依赖,这种方式必须在 sources.list 中指定代码源(deb-src)URI,如果没有 deb-src 源,则使用第一种方法:

sudo apt build-dep wine wine-dev

编译及运行wine

  1. 如果是使用wine,选择安装到系统目录。
# 编译并安装到系统目录
cd wine 
./configure --disable-tests 
make -j$(nproc) 
sudo make install

# 使用wine运行内置应用notepad。
wine notepad
  1. 如果是测试wine,选择安装到指定目录。
# 编译并安装到指定目录
mkdir build release 
cd build 
../wine/configure --disable-tests  
make -j$(nproc) 
make install DESTDIR=../release

# 使用wine运行内置应用notepad。
../release/usr/local/bin/wine notepad

其他编译选项

编译64位wine

注意:编译64位wine必须先编译32位wine,如果逆序,则无法编译成功,且--enable-win64只能编译64位不能编译32位。

../wine/configure --disable-tests --enable-win64

# 指定wine64的编译目录
#../wine/configure --disable-tests --with-wine64=../wine64-build

制作自包含依赖

因为源会影响依赖包的安装,所以有时需要制作离线的依赖包,用于编译或运行。
以下方法需要在纯净环境中执行:

sudo apt clean

sudo apt install gcc-multilib g++-multilib  gcc make gcc-mingw-w64 \
flex bison libasound2-dev libpulse-dev libdbus-1-dev libfontconfig1-dev libfreetype6-dev libgnutls28-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  libasound2-dev:i386 libpulse-dev:i386 libdbus-1-dev:i386 libfontconfig1-dev:i386 libfreetype6-dev:i386 libgnutls28-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 libjpeg-turbo8-dev libjpeg-turbo8-dev:i386 libxcomposite-dev libxcomposite-dev:i386 libc6-i386

cp -r /var/cache/apt/archives ~
cd archives; rm -rf partial
mkdir ../wine-depends
x=$(ls);for y in $x;do dpkg-deb -x $y ../wine-depends;done

为了不影响系统环境,采用手动添加目录方式来添加库的搜索路径:

export LD_LIBRARY_PATH=<搜索路径>:$LD_LIBRARY_PATH

未完成。

使用ccache缓存编译

ccache会缓存中间文件,加速下一次的编译速度,但是ccache是关联文件夹的,如果再换一个目录编译,则不会再生效:

sudo apt install ccache 
export CC="ccache gcc"

关于nproc

nproc命令会输出当前可用的cpu核数,但是由于一些CPU内核是超线程的,所以虚拟CPU核数的能力达不到真实CPU核数,例如我的机器上nproc输出12,但我经常使用10核去编译,make -j10

卸载wine

make uninstall

参考链接

Building_Wine

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

多弗朗强哥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值