放牧代码和思想
专注自然语言处理、机器学习算法
    This thing called love. Know I would've. Thrown it all away. Wouldn't hesitate.

在Wine或CrossOver中利用CMake和MinGW交叉编译

目录

cross-compile.png

在Mac等*nix下编译Windows动态链接库或可执行文件,常见方法是虚拟机。然而虚拟机操作不流畅,来回拷贝源码不方便。虽然虚拟机自动将宿主目录挂载为磁盘分区,但cmd实际无法cd进去:

hankcs.com 2017-06-15 上午10.45.41.png

更好的方法是直接利用Wine容器中的编译链,一边开发调错,一边编译运行。

Wine\CrossOver简介

Wine是类Unix操作系统下的Windows模拟器,CrossOver是其商业版。这里以CrossOver为例。

安装编译工具链

安装CMake

下载Cmake的binary,推荐zip包,解压就可用:https://cmake.org/download/

根据Wine的bottle的位数选择32位或64位,这里以32位为例:https://cmake.org/files/v3.9/cmake-3.9.0-rc3-win32-x86.zip

下载后解压到bottle的C盘根目录:

hankcs.com 2017-06-15 上午10.51.00.png

安装MinGW

常见的MinGW安装方法是下载GUI安装包,然后勾选所需的package手动下载。但程序员就是讨厌GUI,推荐打包好的懒人包:http://www.hankcs.com/program/cpp/jetbrains-clion.html

下载后解压到C盘根目录:

hankcs.com 2017-06-15 上午10.54.39.png

配置环境变量

需要将两者的bin文件夹添加到path中。具体做法是在bottle中运行命令:

regedit

展开如下路径:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment

在PATH键后面的值中增加CMake和MinGW的bin路径:

;C:\MinGW\bin;C:\cmake-3.9.0-rc3-win32-x86\bin

如图所示:

hankcs.com 2017-06-15 上午10.58.22.png

编译

接下来就可以打开cmd,cd到源码的目录,执行:

mkdir build
cd build
cmake .. -G "MinGW Makefiles"
mingw32-make

进行编译了:

hankcs.com 2017-06-15 上午11.03.26.png

如果嫌Wine的console太丑了,可以将日志重定向到文件:

mingw32-make 1>build.log 2>&1

然后利用Mac的控制台.app来查看精美的日志:

hankcs.com 2017-06-15 上午11.12.45.png

编译后在build目录下得到dll和exe:

hankcs.com 2017-06-15 上午11.05.48.png

exe可以直接在Wine中运行:

hankcs.com 2017-06-15 上午11.07.50.png

拖到Windows上去,也可以运行:

hankcs.com 2017-06-15 上午11.10.52.png

知识共享许可协议 知识共享署名-非商业性使用-相同方式共享码农场 » 在Wine或CrossOver中利用CMake和MinGW交叉编译

评论 1

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
  1. #1

    可以cd进去,直接输入盘符X:就可以了

    TravorLZH5年前 (2019-06-13)回复

我的作品

HanLP自然语言处理包《自然语言处理入门》