Msys+Mingw在手 妙用在心!
1 缘起
平时在一些c++群面,看见很多大学十分努力的学习c++/MFC ,看见在编程语言百花争芳的时候,C/C++还是很有很有魅力。估计很多初学者使用都是window下的visual stdio 开发工具。 通过这篇文章可以其他的编译C++工具,融合linux和windows c++开发的能力。
这么多年来从事过window/linux下c/c++开发,对平时的使用过的开发工具,做一个回顾总结 ,主要介绍Msys+Mingw的工具简单使用和在Linux交叉编译win下程序。下面就引出本文要提到的明星Msys+Mingw
2 在window下如何查看实时log文件尾部追加内容?
开发实际项目,肯定必须有一个log文件,来输出些日志信息,这样开发人员可以通过log寻找bugs.
现在开发语言都提供现成类,输出日志。
那如何在window平台下查看这种实时递增的日记?
用文本编辑器 world 打开太麻烦了,并且不方便查看尾部追加内容。
怎么办呢?
解决过linux/unix 的朋友就会想到 ,如果有tail 命令就好了,一个tail -f /var/log/a.log 就可以查看日志实时的增量。
所以的明星登场了
3 msys+mingw window平台下崇尚gnu精神的实践者.
下面看一看baidu 百科是怎么介绍 http://baike.baidu.com/view/371287.htm?fr=aladdin
Minimal GNU(POSIX)system on Windows,是一个小型的GNU环境,包括基本的bash,make等等。是Windows下最优秀的GNU环境。(是否厌倦了Cygwin蜗牛般的shell环境,试试MSYS中的rxvt)
MinGW:即Minimalist GNU for Windows。它是一些头文件和函数库的集合,该集合允许人们在没有第三方动态链接库的情况下使用GCC(GNU Compiler C)产生Win32程序。MinGW主要由GNU binary utilities、GCC和GDB组成。同时还包括一些必要的库,例如libc(C Runtime),及专门用于Win32环境的API接口库。如果你想学习linux环境下的编程,而又不想装linux,那你就装一个MinGW吧。
有了Msys+Mingw,我们就可以在window,就可以学习GCC编程,一致linux下程序到window了.
百科也把Msys+Mingw的“堂哥Cygwin”缺点说了一下,在Msys+Mingw还没有流行的时候,大家都使用Cygwin. 只能感叹"青出于蓝 胜于蓝" ,Cygwin已经不是“当年的小甜甜” ,变成了“牛大嫂”
4 安装msys+mingw 很简单,一键安装.
直接去Mingw的网站 http://www.mingw.org/,在左侧导航点击download 就到跳转到sourceforge.net 下载mingw-get-setup.exe (86.5 kB)
选择msys-base, mingw32-base, mingw-developer-toolkit,mingw-gcc-g++包,进行安装
默认的安装路径C:\MinGW, 进入C:\MinGW\msys\1.0中 ,给msys 创建桌面的快捷方式.
点击桌面msys 图标 ,开始进入msys之旅。
5 有图有真相 -- tail 检测文件尾部的追加内容
在msys中 访问C盘使用/c/ , D盘使用/d/, 其他磁盘,亦复如是。
下面演示 使用tail 命令检查D:/test.log 文件尾增量内容,同时使用 echo 向文件追加内容。
的确是大家期待的那样!!!
以后再有实时查看window平台下程序文本log的场景,大家成竹在胸了。。
6 给Msys添加左膀wget "镜像网站不求人"
大家可以baidu下wget ,简单说是linux平台下载文件的程序,应用比较广。
本节演示在Msys中怎么编译,在window平台就可以镜像个网站,不用求助第三方软件了。
首先下载wget-1.15.tar.gz. 下载后拷贝C:\MinGW\msys\1.0\home中。
这样一如就像在Linux 编译程序一样,等一会就就编译完了。 下面就是wget大显身手的时候--镜像网站了
cd ; wget.exe -r -p -np -k http://www.xiulian.com/XMZHF/xmzf-index.htm
-r 表示递归下载,会下载所有的链接,不过要注意的是,不要单独使用这个参数,因为如果你要下载的网站也有别的网站的链接,wget也会把别的网站的东西下载下来,所以要加上-np这个参数,表示不下载别的站点的链接.
-np 表示不下载别的站点的链接.
-k 表示将下载的网页里的链接修改为本地链接.
-p 获得所有显示网页所需的元素,比如图片什么的.
-E 或 --html-extension 将保存的URL的文件后缀名设定为“.html”
下载过程日志找图,生存镜像的网址目录 www.xiulian.com 以及相应的目录。
大家是不是已经感觉到开源的伟大,以后在镜像个网页,wget 就搞定,再不用那些收费软件,或者老弹广告的软件
有msys+mingw,linux下的好多软件,就可以编译,讲给你的window平台插上”翅膀“。
不过大家可能感觉到 用msys编译的软件比较慢,不在像在linux编译软件快!
下面就介绍个本最后一个玩法。
7 ”独家玩法“-mingw-w64 在linux编译win32/win64 软件
首先介绍下环境,我用的是debian7.3系统,运行的virtualbox虚拟机中.
其次介绍mingw-w64 有2个版本的编译器
g++-mingw-w64-i686 - GNU C++ compiler for MinGW-w64 targeting Win32 --生成32位程序
g++-mingw-w64-x86-64 - GNU C++ compiler for MinGW-w64 targeting Win64 -- 生成64位程序
在debian下 我选择是生成32位程序的g++-mingw-w64-i686,使用apt-get 命令安装起来很简单。
apt-get install binutils-mingw-w64-i686 g++-mingw-w64-i686 mingw-w64-i686-dev mingw-w64-tools
新建helloword.cpp 文件代码如下
#include<cstdio>
#include<cstdlib>
#include<iostream>int main(int argc ,char* argv[])
{
std::cout << "compile hello world.exe by linux and i686-w64-mingw32-g++\n";
system("PAUSE") ;
return 0;
}
编译程序
i686-w64-mingw32-g++ hellword.cpp -o helloword.exe
将linux编译好的helloword.exe 弄到window 运行
是真的。人格担保。。
有的看官感觉这太简单了,不过瘾!
8 杀手锏展示 用linux下的mingw 交叉编译出运行在window平台的wget
下载wget源码,解压同6节。执行下面几个命令,就可以编译出wget.exe
export CC=i686-w64-mingw32-gcc
export RANLIB=i686-w64-mingw32-ranlib
export LIBS=-lpthread
./configure --host=mingw32 --without-ssl --disable-ipv6make
下载wget.exe 到window 桌面,运行起来来个截图,
9 小结
前面介绍关于mingw+msys ,一些简单用法, 有需求有兴趣的可以玩一玩,的确能够让window下c++/C 开发者眼睛一亮。。有所顿悟。
非常流行媒体的播放器VLC社区,就使用linux 下mingw 交叉编译出运行在window下VLC,这也是大家越来越喜欢用Mingw的原因之一。
如果有任何疑惑,请在这里联系我,多踩踩帖!
Msys+Mingw在手 妙用在心!的更多相关文章
- 再次尝试windows下msys+MinGW编译ffmpeg
电脑上安装太多的开源库,环境变量里面一些常用的头文件都有几种,以前使用的编译ffmpeg的方法现在常常提示错误.从config.log中看,这些错误往往都是一些头文件引用错误导致.由于项目中继续编译自 ...
- Msys+MinGW编译VLC
说明:本文只是对官方文档进行简单的翻译总结,旨在帮助一些英文不太好的朋友.官方文档请见wiki.videolan.org/Win32CompileMSYSNew. Msys是MinGW的一个辅助工 ...
- Msys/MinGW与Cygwin/gcc
一. MinGW MinGW 官方网站为 http://www.mingw.org/ MinGW,即 Minimalist GNU For Windows(GCC compiler suite).它是 ...
- 开源项目:windows下使用MinGW+msys编译ffmpeg
本文参考了网络上的不少文章,但由于版本环境的问题参考文章并不能直接指导编译,本文吸收多方经验,并在自己多次编译实验的基础上写成,欢迎转载,请注名出处. FFmpeg是在Linux平台下开发的,但 ...
- windows 下使用 MinGW + msys 编译 ffmpeg
本文参考了网络上的不少文章,但由于版本环境的问题参考文章并不能直接指导编译,本文吸收多方经验,并在自己多次编译实验的基础上写成,欢迎转载,请注名出处. FFmpeg是在Linux平台下开发的,但 ...
- 关于GCC Cygwin MinGW MSYS
[转载]关于Gcc/MinGW/Cygwin/Msys http://blog.sciencenet.cn/blog-778757-616920.html 一.GCC的历史 GCC是一个原本用于Uni ...
- Cygwin 与 MinGW/MSYS/MSYS2,如何选择?甚至还有GNU utilities for Win32
Cygwin与MinGW/MSYS,如何选择? 2012-11-03更新:加入 MSYS 的内容. 2013-10-15更新:修改表格格式,加入介绍链接. 2014-12-17更新:加入 MSYS2 ...
- 使用MinGW 编译 iconv 库
原文链接: http://www.code-by.org/viewtopic.php?f=54&t=166 GNU页面 http://ftp.gnu.org/pub/gnu/libiconv/ ...
- MinGW 使用 msvcr90.dll
MinGW 编译出来的程序总是使用 VC6 的 msvcrt.dll ,VC8,9,10有很多新的API(仅限于c runtime),想使用怎么办? 比如:boost 对 MinGW 最低要求就是 m ...
随机推荐
- 使用aop记录数据库操作的执行时间
在项目中,我们往往需要记录数据库操作的时间,根据操作时间的不同,分别记录不同等级的日志. 首先我们可以写一个类实现MethodInterceptor接口: import org.aopalliance ...
- BZOJ 1146: [CTSC2008]网络管理Network 树链剖分+线段树+平衡树
1146: [CTSC2008]网络管理Network Time Limit: 50 Sec Memory Limit: 162 MBSubmit: 870 Solved: 299[Submit] ...
- 把当前时间(NSDate)转为字符串 - 获取当前时间的Day
1.把当前时间转为字符串 (NSDate与北京时间相隔8小时,格式化之后就是北京时间) NSDate *date = [NSDate date]; NSDateFormatter *dateForma ...
- Game start
今天开始有计划的码代码吧!!我可是以后要进微软或者google的男人.初步计划先学习编程之美吧,每天码一到题的解法,每天每天每天..然后是ACM竞赛基础,每天一节同上.最后..不对,冷静冷静,我已经没 ...
- 如何加密android apk
经过了忙碌的一周终于有时间静下来写点东西了,我们继续介绍android apk防止反编译技术的另一种方法.前两篇我们讲了加壳技术(http://my.oschina.net/u/2323218/blo ...
- 《Cocos2d-x实战 工具卷》上线了
感谢大家一直以来的支持! 各大商店均开始销售:京东:http://item.jd.com/11659696.html当当:http://product.dangdang.com/23659809.ht ...
- linux交叉编译裁剪内核记录
刚开始学习嵌入式内核编译,因为要修改内核的默认配置,因此这里把自己的学习记录写下来,方便以后查阅,也给别人一个参考,有什么写的不对的或者更好的方法,请指正~ 开发板有usb从口,现在想要让开发板作为一 ...
- 9款完美体验的HTML5/jQuery应用
1.jQuery动画图标菜单导航 仿苹果样式 这次要分享的这款jQuery插件非常酷,它是一款带有动画按钮的jQuery菜单插件.而且从菜单的外观上来看,有点苹果菜单风格的味道.当我们将鼠标滑过菜单项 ...
- Codevs 1014 装箱问题
题目描述 Description 有一个箱子容量为V(正整数,0<=V<=20000),同时有n个物品(0<n<=30),每个物品有一个体积(正整数). 要求n个物品中,任取若 ...
- [笔记] MySql Workbench 导出表结构和数据报错 mysqldump: [ERROR] unknown variable 'delayed-insert=FALSE'
下午使用MySql Workbench导出数据库表结构,设置完导出选项后执行导出,报如下错误: :: Dumping nacweixindb (tb_app) Running: mysqldump.e ...