首页 > 编程知识 正文

mingw编译cpp文件,mingw编译环境

时间:2023-05-05 07:12:09 阅读:229495 作者:1807

写在前面

   一个多月没有更新博客,先是编译高版本的比特币源码,后是编译cpuminer。之间没有学习任何别的东西,光编译高版本源码一样就让我身心俱疲。我现在真得有些腻了,想回去学一些纯粹的技术,或者写写代码。可是导师不允许,我也不能消极对待眼前的工作。近日闲暇,姑且把刚刚完成的cpuminer编译过程记录一下。

1.windows上mingw+msys2安装

1.1简要介绍

msys2是继承了pacman和Mingw-w64的msys的升级版,提供一个shell的类linux环境。

MinGW,是Minimalist GNU for Windows的缩写。说白了就是一个生成windows程序的工具集。而且是跨平台的,主要用来在windows下用gcc生成windows程序。基本上是在linux写的需要用gcc编译的程序,可以用mingw去编译并生成exe。

1.2安装工作

安装的话这里不再复现安装过程,给出一个地址并列出一些关键点

https://www.msys2.org/     msys2官网下载地址。

有两个可选项,分别对应32和64位

下载好直接点击安装不解释。

安装后在开始菜单会有三个选项,下:

分别对应三种运行方式,不同运行方式调用的配置不同。

再打开前首先配置一下镜像源,因为自带的镜像源下载很慢,不光慢,还会因为不稳定直接跳过下载,最后整一堆不完整下载。

推荐三个地址,分别放入到etcpacman.d的mirrorlist.mingw32,mirrorlist.mingw64,mirrorlist.msys三个文件的开头(一定要放开头,不然还是从前面的开始)

这三个地址分别是中科大,北理工,清华的镜像地址。里面资源丰富,不光有msys,常用的资源都有,下载速度还可以。

mirrorlist.mingw32

Server = http://mirrors.ustc.edu.cn/msys2/mingw/i686/Server = http://mirror.bit.edu.cn/msys2/msys/i686/Server = https://mirrors.tuna.tsinghua.edu.cn/msys2/mingw/i686/

mirrorlist.mingw64 

Server = http://mirrors.ustc.edu.cn/msys2/mingw/x86_64/Server = http://mirror.bit.edu.cn/msys2/msys/x86_64/Server = https://mirrors.tuna.tsinghua.edu.cn/msys2/mingw/x86_64/

 mirrorlist.msys

Server = http://mirrors.ustc.edu.cn/msys2/mingw/$arch/Server = http://mirror.bit.edu.cn/msys2/msys/$arch/Server = https://mirrors.tuna.tsinghua.edu.cn/msys2/mingw/$arch/

填写好后打开msys,进行一些更新。

打开后执行命令pacman -Syu更新系统核心和各种包等

pacman是msys2的管理工具

下面列出pacman的常用命令

pacman -S 软件名: 安装软件。也可以同时安装多个包,只需以空格分隔包名即可。
pacman -S --needed 软件名1 软件名2: 安装软件,但不重新安装已经是最新的软件。
pacman -Sy 软件名:安装软件前,先从远程仓库下载软件包数据库(数据库即所有软件列表)。
pacman -Sv 软件名:在显示一些操作信息后执行安装。
pacman -Sw 软件名: 只下载软件包,不安装。

pacman -Ss 关键字: 在仓库中搜索含关键字的软件包(本地已安装的会标记)

pacman -Qs   关键字: 搜索已安装的软件包。

我们编译cpuminer,主要是需要gcc和curl。

pacman -S mingw-w64-i686-toolchain安装工具链pacman -S base-devel基础库pacman -S mingw-w64-i686-gcc安装gccpacman -S curl安装libcurl库。 2.编译cpuminer

cpuminer源码在github上的版本颇多,针对不同的币种。

下面以https://github.com/csdxz/cpuminer-multi这个地址下载为例。

下载zip包,解压,打开readme查看编译方法

其中msys和mingw我们已经准备好了,来看看具体要求。

确保libcurl.m4文件在mingw/share/aclocal中,这个在安装完curl后基本是一定是在的。curl-config也在。

openssldevel似乎是会在安装libcurl(我的是7.69版本)的时候同时安装了。如果没有直接按照上面的方法用pacman安装即可。

执行./autogen.sh。

可能会报错,需要用pacman安装automake工具。反正就是缺什么补什么。

这一步的所做的就是执行脚本,生成configues等一系列配置文件。

然后执行:

./configure CFLAGS="-march=native"

-march=native大概的意思就是只生成针对该机器指令集的可执行文件,而不会生成兼容的指令集。不要加上LIBCURL="-curldll"。不要问我为什么,因为我也不清楚。加上就是curl不可用。另外执行时可能会出现C编译器也不工作的错误。

通过查看config.log文件,可以找到错误的来源,其实就是mstcpip.h这个文件不存在。这个文件如果不在,请到网上下载内容并放入到相应mingw/include目录下。如若出现其他错误,还请仔细查看config.log文件,看到底是在执行什么命令时出错了。

之后

make

make也可能出错,尤其是以前的项目依赖的现在的头,其定义可能有冲突。将项目中冲突部分注释掉即可。

编译成功即会产生minerd.exe。

执行minerd --help即可查看相应命令。

 

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。