使用cygwin移植Linux的项目到Windows下之总结
关键字: cygwin,MinGW,移植,Linux,Windows
1、why
接到一个任务,把公司的某个在Linux下开发的项目(也就是一个程序啦)移植到Windows下,使得其能够在Windows下运行,而且运行的结果固然要是正确的啦,何谓正确,固然就是和Linux运行结果比对,同样就行。
2、难在何处
难就难在如何在Windows下编译经过。假设你在Linux下开发了一个这样的程序:
#include<stdio.h>
int main()
{
printf("Hello World\n");
return 0;
}
那我表示移植Windows下毫无压力,由于此程序中并无使用Linux独有的API。可是当你的程序中使用了Linux独有的API时,那移植起来就有不少工做量了。
3、基本思想
作最坏的打算,你的程序里面用了不少Linux独有的API(其实你也不能说全哪些是Linux独有的API),而后移植到Windows下,编译的时候报错:找不到xxx.h的头文件,很明显此xxx.h头文件在Windows中是没有的,进而该头文件中声明的某些函数也是Windows没有的,或者Windows下相似的API不是放在这个头文件中声明的。
此时,你考虑注释掉这个#include<xxx.h>,接下来再编译,不出意外应该是报错:某某函数未定义。那么这下就找到了xxx.h中被引用的函数了。因而下一步,你应该考虑是否Windows下有相对应的函数来完成相似的工做,若是你对Windows不熟,很差意思,只能上网查啦。MSDN是个好去处。
假设你找到了Windows下对应的函数,尝试更换#include<xxx.h>,改为#include<yyy.h>(yyy.h是Windows下对应的那个API的声明头文件),而后下面调用的地方也相应的作些小修改。而后再验证结果是否正确。
假设你找不到Windows下对应的函数,很差意思,你杯具了。你得本身或者从网上找资料来用Windows的环境来构造一个新的API,状况通常会很麻烦,通常会让人感到沮丧。
4、新的但愿
让咱们停下来想一想,Linux下有这么多好用的东西,不少东西人们都想移植到Windows下,只是你一我的碰到这个问题吗?答案是否认的,已经有无数的人们遇到这个问题了。或许你又在想,有没有一种工具,利用Windows的一些函数来实现Linux独有的API吗?恭喜你,真有!
下面请cygwin隆重出场。
5、什么是cygwin
与其我在这介绍cygwin是什么,还不如直接看一下百科全书,固然啦,不是百度百科,是wiki百科。http://zh.wikipedia.org/wiki/Cygwin
6、cygwin怎么用
这就是重点了,下面说说使用过程吧,亲测。
下载cygwin,安装cygwin,这个就很少说了。。。ps:在安装cygwin的时候,若是不懂的话就全选了,可是代价是起码10G+的硬盘空间,并且不知道要装多久,我挂了两天机。
安装完以后,记得把C:\cygwin\bin添加到环境变量PATH中去,而后就启动cygwin,看到一个shell界面(小黑框),而后把项目放到/home/michael下,而后进入到对应的目录,make。很神奇,就这样经过了。。。而后最好是把Makefile的TARGET改为xxx.exe,而后你试试,把xxx.exe拖出来双击运行或者放cmd里面加上参数运行,是否是成功了?