最近要使用北陆先端科学技术大学院大学开发的脑电数据格式转换套件BioSig。由于希望以动态链接库的方式调用而非直接使用编译好的exe文件,所以我下载了该软件的C++源代码并希望在本地编译运行。
在Linux环境中,编译只需要在系统安装有gcc的情况下对解压后的源代码使用./configure
进行配置并生成Makefile文件,再使用make
命令编译即可。在Windows环境下,我本身使用的编译器是Dev-C++。我尝试使用Dev-C++编译,但是没有成功。
如何在Windows系统中像Linux下一样使用gcc make来编译呢?直接使用命令行输入相同的指令一定是无效的:
Windows会认为你是需要打开configure这一文件,它却不知道打开它的默认方式。在configure都无法进行的情况下,make则无从谈起。
安装MinGW及MSYS
MinGW是GNU为Windows开发的GNU环境,全称为“Windows内的最小GNU( Minimalist GNU for Windows)”,内置gcc编译器。其make指令是通过%MinGW_ROOT%\bin\mingw32-make.exe
实现的。完整软件请至官网http://www.mingw.org/下载。
到了下载页面后,请选择下载mingw-get-setup.exe
,这仅仅是一个mingw的下载器,十分小巧,撰写本文时的版本仅仅有91kB。下载完成后打开安装器,点击Install。
等待安装器下载安装基础的安装内容。
安装完成后会自动弹出MinGW Installation Manager的窗口,检查窗口中的Basic Setup,是否均为绿色方块。
这是应该呈现的情况,均为绿色方块。
这是需要进一步安装的情况,存在空白方块。
对每一个空白方块右击,选择Mark for Installation,添加进安装计划。
选择Installation,并选择Apply Changes。
同样地,进入All Packages,对所有以msys- 开头的内容选择Mark for Installation,并Apply Changes。
配置环境变量
进入%MinGW_ROOT%\msys\1.0\bin
路径下,我们可以看到一大堆.exe
的可执行文件。熟悉Linux的人一定能从中找到不少非常亲切的名字。
为了使用它们,就应当把%MinGW_ROOT%\msys\1.0\bin
添加到系统环境变量中去。
使用make命令编译源代码
在Windows 10下,右击“开始”菜单图标打开命令行。
- 进入到源代码的路径下。
PS C:\WINDOWS\system32> cd E:\biosig4c++-1.9.3.src\biosig4c++-1.9.3
PS E:\biosig4c++-1.9.3.src\biosig4c++-1.9.3>
- 使用
sh .\configure
来启动configure。
所有可执行文件,如果没有MSYS中自带的命令可以执行,请一定在前面加上sh
以调用sh.exe来执行。
- 使用
make
指令编译。
至此,我们的Windows系统中已经具有一套GNU环境,可以进行基础的Linux系统下的操作,且编译后的内容是在Windows上运行的。
参考与引用
[1] MSYS的搭建及参数配置
[2] windows 下使用make命令,编译代码
Windows下利用MinGW/MSYS编译源代码 由 赵匡是 采用 知识共享 署名-非商业性使用 4.0 国际 许可协议进行许可。
本许可协议授权之外的使用权限可以从 https://www.zhaokuangshi.cn/ 处获得。
可从关于知识产权了解更多本文的著作权信息。
特色图像版权须知
Copyright © 2003 Free Software Foundation, Inc.
This image is available under the GNU Free Documentation License v1.3, or the Free Art License, or the Creative Commons Attribution-ShareAlike 2.0 License.
The GNU head is, however, also a trademark for the GNU Project. If you want to use the GNU head to link to a website run by the Free Software Foundation or the GNU project, feel free, or if you're using it in contexts talking about GNU in a supportive and accurate way, you can also do this without permission. For any other requests, please ask <licensing@fsf.org> for permission first.