sudo apt install \
git \
cmake \
ninja-build \
pkg-config \
ccache \
flex \
bison \
clang \
llvm \
lld \
binfmt-support \
python-setuptools \
gcc-x86-64-linux-gnu \
g++-x86-64-linux-gnu \
libgcc-11-dev-i386-cross \
libgcc-11-dev-amd64-cross \
nasm \
python3-clang \
libstdc++-10-dev-i386-cross \
libstdc++-10-dev-amd64-cross \
libstdc++-10-dev-arm64-cross \
squashfs-tools \
squashfuse \
libc-bin \
libc6-dev-i386-amd64-cross \
lib32stdc++-11-dev-amd64-cross
sudo apt install \
git \
cmake \
ninja-build \
pkg-config \
ccache \
flex \
bison \
clang \
llvm \
lld \
binfmt-support \
python-setuptools \
gcc \
g++ \
libgcc-8-dev-i386-cross \
libgcc-8-dev-amd64-cross \
nasm \
libstdc++-8-dev-i386-cross \
libstdc++-8-dev-amd64-cross \
libstdc++-8-dev-arm64-cross \
squashfs-tools \
squashfuse \
libc-bin \
libc6-dev-i386-amd64-cross \
lib32stdc++-8-dev-amd64-cross
如果某些包找不到,从命令里删除这一行即可,注意换行也要删掉,不能有多余的空行。命令结尾如果是\
,要连续按两次回车。
sudo apt install \
libsdl2-dev \
libepoxy-dev \
libssl-dev \
libudev-dev \
libdbus-1-dev \
libxcomposite-dev \
libcups2-dev \
libopenal-dev \
libsane-dev \
libcapi20-dev \
libfreetype6-dev \
libxcursor-dev \
libxxf86vm-dev \
libdbus-1-dev \
libgphoto2-dev \
libxcomposite-dev \
liblcms2-dev \
libpulse-dev \
libgstreamer-plugins-base1.0-dev \
libudev-dev \
libunwind-dev \
libsdl2-dev \
libosmesa6-dev \
libcapi20-dev \
libcups2-dev \
libfontconfig1-dev \
libgsm1-dev \
libkrb5-dev \
libjxr-dev \
libmpg123-dev \
libopenal-dev \
libldap2-dev \
libxml2-dev \
libxslt1-dev \
libgnutls28-dev \
libgcrypt20-dev \
libvulkan-dev \
libpcap0.8-dev \
libsane-dev \
libvulkan-dev \
unixodbc-dev \
samba-libs \
samba-dev \
ocl-icd-opencl-dev \
libpcsclite-dev \
libusb-1.0-0-dev \
libv4l-dev
如果要编译正常的 wine x86_64 版,请先编译安装32位版,然后把64位版编译安装到相同目录,此时64位的wine会自动安装为wine64。
64位依赖和32位依赖可能无法同时安装,你可能需要使用两个不同的容器安装不同的依赖。
开启i386架构:
sudo dpkg --add-architecture i386
sudo apt update
修复samba-dev
的依赖问题:
rm -rf ./samba-dev*
apt download samba-dev:i386
dpkg -X samba-dev_*.deb ./samba-dev/
dpkg -e samba-dev_*.deb ./samba-dev/DEBIAN/
sed -i s/libparse-pidl-perl,/libparse-pidl-perl:amd64,/g ./samba-dev/DEBIAN/control
cat ./samba-dev/DEBIAN/control
dpkg -b ./samba-dev
apt install --reinstall ./samba-dev.deb
sudo apt install \
libsdl2-dev:i386 \
libepoxy-dev:i386 \
libssl-dev:i386 \
libudev-dev:i386 \
libdbus-1-dev:i386 \
libxcomposite-dev:i386 \
libcups2-dev:i386 \
libopenal-dev:i386 \
libsane-dev:i386 \
libcapi20-dev:i386 \
libfreetype6-dev:i386 \
libxcursor-dev:i386 \
libxxf86vm-dev:i386 \
libdbus-1-dev:i386 \
libgphoto2-dev:i386 \
libxcomposite-dev:i386 \
liblcms2-dev:i386 \
libpulse-dev:i386 \
libgstreamer-plugins-base1.0-dev:i386 \
libudev-dev:i386 \
libunwind-dev:i386 \
libsdl2-dev:i386 \
libosmesa6-dev:i386 \
libcapi20-dev:i386 \
libcups2-dev:i386 \
libfontconfig1-dev:i386 \
libgsm1-dev:i386 \
libkrb5-dev:i386 \
libjxr-dev:i386 \
libmpg123-dev:i386 \
libopenal-dev:i386 \
libldap2-dev:i386 \
libxml2-dev:i386 \
libxslt1-dev:i386 \
libgnutls28-dev:i386 \
libgcrypt20-dev:i386 \
libvulkan-dev:i386 \
libpcap0.8-dev:i386 \
libsane-dev:i386 \
libvulkan-dev:i386 \
unixodbc-dev:i386 \
ocl-icd-opencl-dev:i386 \
libpcsclite-dev:i386 \
libusb-1.0-0-dev:i386 \
libv4l-dev:i386
llvm-mingw用于编译Wine的PE DLL,可从github下载:
解压后将路径加到PATH和LD_LIBRARY_PATH中,如:
wget -C https://github.com/mstorsjo/llvm-mingw/releases/download/20230320/llvm-mingw-20230320-ucrt-ubuntu-18.04-$(uname -m).tar.xz
tar xf llvm-mingw-20230320-ucrt-ubuntu-18.04-$(uname -m).tar.xz
export LD_LIBRARY_PATH=$PWD/llvm-mingw-20230320-ucrt-ubuntu-18.04-$(uname -m)/lib
export PATH=$PWD/llvm-mingw-20230320-ucrt-ubuntu-18.04-$(uname -m)/bin:$PATH
其中$PWD
表示当前目录,如果你的llvm-mingw-20230320-ucrt-ubuntu-18.04-x86_64
目录已经解压出来了,可以先cd
到解压出来的llvm-mingw-20230320-ucrt-ubuntu-18.04-x86_64
文件夹的父目录再执行上述export
命令,无需再执行tar
命令解压。
# 假设 ./wine 是 wine的源代码
cd ./wine
export CC=clang
export CXX=clang++
# 启用ccache编译缓存
export PATH=/usr/lib/ccache:$PATH
# 编译wow64版(x32x64)
mkdir build.x32x64
cd build.x32x64
../configure --enable-win64 --disable-tests --with-mingw --enable-archs=i386,x86_64 --prefix=$PWD/../../wine-x32x64
make -j$(nproc)
make install -j
# 编译32位版(需要安装32位版依赖,你可能需要两个不同的容器安装不同的依赖,分别编译然后安装到同一个文件夹)
cd ..
mkdir build.x32
cd build.x32
../configure --disable-tests --with-mingw --prefix=$PWD/../../wine-x86_64
make -j$(nproc)
make install -j
# 编译64位版(注意安装顺序,要先安装32位版,再安装64位版)
cd ..
mkdir build.x64
cd build.x64
../configure --enable-win64 --disable-tests --with-mingw --prefix=$PWD/../../wine-x86_64
make -j$(nproc)
make install -j
llvm-mingw-20240619-ucrt-uos-1070-aarch64.tar.xz(70.42 MB)