使用cygwin移植Linux的项目到Windows下之总结(转)

使用cygwin移植Linux的项目到Windows下之总结(转)

原文 http://my.oschina.net/michaelyuanyuan/blog/68615?p=1

一、why

接到一个任务,把公司的某个在Linux下开发的项目(也就是一个程序啦)移植到Windows下,使得其可以在Windows下运行,并且运行的结果当然要是正确的啦,何谓正确,当然就是和Linux运行结果比对,一样就行。

二、难在何处

难就难在如何在Windows下编译通过。假设你在Linux下开发了一个这样的程序:

#include<stdio.h>

int main()

{

printf("Hello World\n");

return 0;

}

那我表示移植Windows下毫无压力,因为此程序中并没有使用Linux独有的API。但是当你的程序中使用了Linux独有的API时,那移植起来就有很多工作量了。

三、基本思想

做最坏的打算,你的程序里面用了很多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,情况一般会很麻烦,一般会让人感到沮丧。

四、新的希望

让我们停下来想想,Linux下有这么多好用的东西,很多东西人们都想移植到Windows下,只是你一个人碰到这个问题吗?答案是否定的,已经有无数的人们遇到这个问题了。或许你又在想,有没有一种工具,利用Windows的一些函数来实现Linux独有的API吗?恭喜你,真有!

下面请cygwin隆重出场。

五、什么是cygwin

与其我在这介绍cygwin是什么,还不如直接看一下百科全书,当然啦,不是百度百科,是wiki百科。http://zh.wikipedia.org/wiki/Cygwin

六、cygwin怎么用

这就是重点了,下面说说使用过程吧,亲测。

下载cygwin,安装cygwin,这个就不多说了。。。ps:在安装cygwin的时候,如果不懂的话就全选了,但是代价是起码10G+的硬盘空间,而且不知道要装多久,我挂了两天机。

安装完之后,记得把C:\cygwin\bin添加到环境变量PATH中去,然后就启动cygwin,看到一个shell界面(小黑框),然后把项目放到/home/michael下,然后进入到对应的目录,make。很神奇,就这样通过了。。。然后最好是把Makefile的TARGET改成xxx.exe,然后你试试,把xxx.exe拖出来双击运行或者放cmd里面加上参数运行,是不是成功了?

时间: 2024-10-13 22:47:36

使用cygwin移植Linux的项目到Windows下之总结(转)的相关文章

linux路径分隔符&#39;/&#39;与windows下的分隔符&#39;\\&#39;,以及java项目,web项目读取项目的路径

1, linux下的文件分隔符是'/', windows下的文件分隔符为'\'.但是'\'这个符号是转义符.如果需要在console输出'\'这个符号的,你需要输入'\\'.另外转义符'\'还可以用双引号的字符内部再次使用双引号的这种情况,例如下面第三行. @Test public void test$(){ System.out.println("\\"); System.out.println('/'); System.out.println("\"为了转义双引

Linux如何下解压windows下的.zip和.rar文件

Linux自带的unzip命令可以解压windows下的zip格式的压缩文件. 如何unzip没安装,可以yum 安装下: yum -y install unzip unzip命令 语法:unzip [选项] 压缩文件名.zip 各选项的含义分别为: -x 文件列表 解压缩文件,但不包括指定的file文件. -v 查看压缩文件目录,但不解压. -t 测试文件有无损坏,但不解压. -d 目录 把压缩文件解到指定目录下. -z 只显示压缩文件的注解. -n 不覆盖已经存在的文件. -o 覆盖已存在的

linux 用vim 打开windows 下纯文本文件(*.txt,*.html) 乱码问题

在linux操作系统下,我们有时用vim打开在windows下的txt或html文件时,会发现发现在windows下能正常显示的txt或html文件出现了中文乱码. 出现这种情况的原因为两种操作系统的中文压缩方式不同,在windows环境中中文压缩一般为gbk,而在linux环境中为utf8,这就导致了在windows下能正常显示txt或html文件在linux环境下打开出现了乱码状态. 解决方法:在linux用iconv命令,如乱码文件名为index.html,那么在终端输入如下命令: ico

完全用Linux工作,抛弃windows

录一篇旧文 作者:王垠 我已经半年没有使用 Windows 的方式工作了.Linux 高效的完成了我所有的工作. GNU/Linux 不是每个人都想用的.如果你只需要处理一般的事务,打游戏,那么你不需要了解下面这些了. 我不是一个狂热的自由软件份子,虽然我很喜欢自由软件.这篇文章也不是用来推行自由软件运动的,虽然我觉得自由软件运动是非常好的. 这篇文章也不是用来比较 Linux 和 Windows 内核效率,文件系统,网络服务的.我现在是作为一个用户而不是一个开发者来说话的,我们的讨论是基于操作

全然用linux工作,放弃windows

按: 虽然我们已经不习惯看长篇大论, 但我还是要说, 这是一篇值得你从头读到尾的长篇文章. 2005年9月22日,清华在读博士生王垠在水木社区BLOG上发表了<清华梦的粉碎--写给清华大学的退学申请>明白要求退学, 引起社会各界广泛争论. 他创作的长篇文章<全然用Linux工作>, 洋洋两万多字, 从不同角度居高临下的阐述了他眼中Linux全然优越于Windows的各种理由, 这篇文章并不简单的是一篇论述"Windows能做的事Linux都能做"这种文章, 通篇

在windows下使用Cygwin模拟unix环境 并安装apt-cyg svn等插件

在windows下使用Cygwin模拟unix环境,并安装apt-cyg,svn等工具 一.Cygwin的安装 1. 下载Cygwin,这个可以到这里下载 ,至于使用32位的还是64位的版本可以根据自己的系统而定,打开下载好的setup-x86.exe(以64bitwindws系统为例) . 安装过程中注意勾选下面的包,为了后面的操作,我们有必要在这里选择一些必要的包进行安装: (1) curl:(2) git* (git,git-completion, git-gui, gitk):(3) l

windows下使用putty+psftp连接linux虚拟机进行文件传输

嘛,首先需要用putty连接linux.除了重要的ssh协议的配置之外,还可能要在linux下输入命令: service iptables stop(用于关闭防火墙) service sshd start(开启ssh协议) ifconfig(查看ip地址) 可以通过passwd  [用户名]的命令修改登录密码(嘛,root密码设成123456被access denied很多次,改成zxcvbnm123就登上了<黑人问号?>) 然后要打开psftp(http://www.chiark.green

Windows下使用EasyBCD和LiLi USB Creator安装Linux系统

Windows下使用EasyBCD和LiLi USB Creator安装Linux系统 写在前面:针对BIOS出现故障或者对U盘启动安装不是很熟练的朋友而写. 使用Win10朋友大多数使用UEFI启动+GPT分区.在UEFI里面修改启动项之后装机会进不了Win10,在给朋友通过PE装Win10 的时候如果设置Legacy启动,在PE里面安装完Win10重启之后会报错:提示您的什么不对,Wndows无法安装.就到无限循环的地步,设置成UEFI启动之后,再重启系统,Win10根本就不启动了,使用UE

windows下的txt文件传到Linux下中文乱码问题

之所以出现乱码是因为所压缩的文件中,有的文件是以中文命名.而在windows下中文的编码一般为gbk,而linux下中文的编码一般为utf8,所以在windows下正常打开的文件,到linux下很可能会出现乱码. 解决办法为:使用命令iconv对文件内容编码进行转换.例如我有一个文件"linux常用命令"在windows下打开正常,而在linux下打开则会乱码,办法为在终端输入: iconv -f gbk -t utf8 inputfile > outputifile 注意:ou