Mac 环境编译安装wine
参考文献:
https://blog.csdn.net/wzh8108/article/details/106810568
https://blog.csdn.net/klanboy_coy/article/details/113778190
需要在Mac安装wine,直接从wine官网上下载pkg包安装的程序不能打开,只能自己编译安装了。需要注意的是,我使用的Mac系统为10.14.6,在wine官网上说wine仅支持Mac系统10.8到10.14版本,如果其他版本的系统需要安装的请自行尝试。
首先需要下载wine源码,可以在wine的官网上下载,地址是
https://dl.winehq.org/wine/source/
注意下载的版本,由于编译的时候需要mac系统安装bison,不同的wine版本在编译时所需bison版本也不同。我下载的wine版本是6.0的,bison版本为3.7.6,编译的时候不会出问题。如果要使用wine5.0版本,bison版本在3.5.3上下,具体的请查看参考文献。
由于在通过pkg安装wine时需要XQuartz支持,我也下载了XQuartz 2.7.7,安装XQuartz主要是为了一个freetype库,如果不安装的话,需要自己手动下载freetype编译安装。如果要支持wine,XQuartz 版本也只能在2.7.7到2.7.11版本,2.8版本就不能运行了。
下载好wine6.0源码后,在家目录下新建一个文件夹wine64,Mac10.14.6只支持64位系统,就只用创建一个文件夹进行64位编译就可以了。创建好文件夹之后把下载源码包解压到文件夹中。编译过程会把编译出的数据直接写到源码文件夹,所以最好不要源码文件夹发在桌面上。
cd /Users/swl/wine64 //切换到wine源码目录,编译需要在源码目录里进行
./configure --enable-win64 //进行64位编译的配置检测,可以查看哪些模块没有安装
如果编译出错,提示需要升级bison版本,则需要先查看bison版本。
configure: error: Your bison version is too old. Please install bison version 3.0 or newer.
bison --version //显示bison版本
一般Mac系统中bison版本为2.3,需要手动安装新版本bison
brew install bison //通过brew安装bison
安装完成后,如果还是提示同样的错误,则需要手动替换bison
brew list bison //查看通过brew安装bison的路径
bison实际安装到/usr/local/Cellar/bison/目录,而系统实际运行在/Library/Developer/CommandLineTools/usr/bin,所以需要备份旧文件,复制新文件
cd /Library/Developer/CommandLineTools/usr/bin //切换到bison运行目录
ls -l bison //查看bison文件
sudo mv bison bison_bak //使用管理员权限备份原有的bison文件
sudo cp /usr/local/Cellar/bison/3.7.6/bin/bison ./bison //把bison文件复制到运行目录
bison --version //显示bison版本,如果显示为3.7.6则表示版本更新成功
之后切换会wine源码所在位置,重新进行配置检测
./configure --enable-win64
出现上图所示的configure: Finished. Do ‘make’ to compile Wine.后就可以使用make进行编译(如果提示没有权限,就使用sudo make进行编译)。
如果出现-p ppy_ -o ppy.tab.c ppy.y系统报错,并且有以下提示
/Library/Developer/CommandLineTools/usr/bin/m4: /Library/Developer/CommandLineTools/usr/share/bison/skeletons/c-skel.m4: No such file or directory
则是因为bison与wine的版本不匹配,建议下载bison对应版本的源码,找到skeletons文件复制到指定位置/Library/Developer/CommandLineTools/usr/share/bison/,再编译就不会出现问题了。
编译时间有点长,需要耐心等待。wine6.0编译完成之后,就可以用下面代码进行Windows程序使用了。如果在终端目录中直接运行下面代码提示没有该命令,这是因为在编译过程中没有在bin目录中创建wine对应的链接,可以手动创建链接或者把目录切换到安装wine的目录下,再使用wine命令。
wine64 --version //查看wine是否安装成功
wine64 /path/****.exe //运行Windows程序