浅谈如何将linux上的程序移植到windows上

原创 2013年12月02日 19:21:38

浅谈如何将linux上的程序移植到windows上

最近在做一个项目,我需要快速的求解大规模稀疏线性方程组,目前网上有一些开源的项目,其中一个较流行的是UMFPACK,从算法本身来说它具有很好的并行性,我需要使用它里面的一些东西,从网上下载的源代码只能在linux运行,但该项目需要在windows上运行,因此需要将UMFPACK移植到windows上,为了方便对程序进行跟踪调试,整个项目在vs2010中进行。

查阅了大量的资料发现目前将linux上的程序移植到windows上绝大部分都是使用的cygwin,我也通过使用cygwin在windows上成功的运行了demo程序,虽然可以使用cl命令来编译demo,但整个过程是在命令行中进行的,程序的跟踪调试也不是太方便。既然想要使用vs2010,因此就不能借助于cygwin。上面这条路行不通,就只能根据makefile文件中的依赖关系,手动在vs2010中修改项目编译链接的条件,从而达到要求。

为了能保证UMFPACK可在vs2010中调试、运行,我是从两个方面入手的:

        (1)判断UMFPACK能否脱离linux环境进行编译

         这一步的主要工作就是判断源程序是否调用了linux自带的函数,从而确定程序移植的可行性。由于源程序的数目过多,在linux下通过makefile文件来管理文件之间的依赖关 系,之后通过make命令来执行程序,从而保证程序的正确执行。其实在windows上也可以运行makefile文件,它的执行命令是nmake,但windows中makefile文件的格式与linux中makefile文件的格式有所不同,因此就需要将linux下的makefile文件转化为windows上的makefile文件,具体格式都可以从网上查到,这里就不在多说。转化之后 得到了运行demo程序,得到了正确的解,这就表明该项目的源文件可以不做修改就移植到windows上。

         (2)在vs2010中建立UMFPACK的工程

         通过第(1)步的验证,linux下的项目可以移植到windows上,那么直接把需要的.c、.h都存放在UMFPACK的目录下,然后在vs2010中将其分别导入到源文件和头文件中,不就可以了吗?这个方案是可行的,但有一个问题,所有.c文件的编译条件都将相同,但是通过观察makefile文件发现,.c文件的编译条件是存在差异的,那这应该怎么办呢, 这时就需要更改每个.c文件的编译条件,解决办法为:vs资源管理器--->选中某个.c文件--->进入其属性页面--->配置属性--->常规,在右边出现的项类型选项中选择“自定义生成工具”,保存之后运行。当有上百个.c文件时,这种方法就不可取了。

          查阅资料,发现了另外一种方法,思路很简单,就是将.c文件按照编译条件进行分类,相同编译条件的文件为一类,然后根据编译条件建立不同的工程。UMFPACK提供的程序是供我自己写的程序调用的,在一个解决方案中将我自己写的程序设定为可执行工程,将UMFPACK提供的源文件设定为静态库工程,然后在可执行工程中引用这些静态库工程就可达到预期的目标。

小结

通过上面的叙述,在linux上编写的程序能够移植到windows上执行,首先判断该程序能否移植到linux上,然后在windows上进行修改,保证其可以运行。在实际的运用中,可以将(2)中的两种方法进行融合,当有很多.c文件的编译条件相同时,就可建一个静态库工程,不多的时候就可与其他文件合建一个工程,这样就可减少所建工程的个数。


将Linux代码移植到Windows的简单方法

一.前言  Linux拥有丰富各种源代码资源,但是大部分代码在Windows平台情况是无法正常编译的。Windows平台根本无法直接利用这些源代码资源。如果想要使用完整的代码,就要做移植工作。因为C/...
  • tjnew
  • tjnew
  • 2006年07月07日 17:59
  • 1489

记一次把Windows程序移植到Linux的过程

场景复现 今天下午,客户反映我们系统的API在Linux下使用时有点问题。发布主管,想在本地做个测试,但是目前现有的Demo程序只有windows版本的,所以找到负责API的我,把该Demo程序从W...
  • VampirEM_Chosen_One
  • VampirEM_Chosen_One
  • 2016年06月24日 16:35
  • 1968

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

使用cygwin移植Linux的项目到Windows下之总结 关键字: cygwin,MinGW,移植,Linux,Windows 一、why     接到一个任务,把公司的某个在Lin...
  • sinat_22991367
  • sinat_22991367
  • 2017年06月02日 22:51
  • 447

Linux到Windows下代码移植

Linux下拥有丰富的代码,github等Linux代码集散区都有大量的Linux代码,因此若能够移植到windows下使用,能够很好地促进开发。 通常的开源代码中都预留了visual studio的...
  • sungo2012
  • sungo2012
  • 2016年06月07日 14:21
  • 1104

Windows代码移植到Linux

  • 2012年02月10日 15:10
  • 20KB
  • 下载

将win32程序移植到linux注意事项

对于这个问题,网上已经有很多资料给予了介绍,但是相比于这些信息,本文立足于个人的实践,将内容具体到开发环境和源代码,我觉得还是有很多值得总结和借鉴的。 首先声明开发环境。Win32程序的开发环境...
  • ly402609921
  • ly402609921
  • 2015年01月04日 17:32
  • 2215

将Linux代码移植到Windows的简单方法

http://blog.donews.com/xzwenlan/archive/2005/02/09/272755.aspx
  • jack_incredible
  • jack_incredible
  • 2011年10月25日 19:11
  • 273

嵌入式Linux系统移植的四大步骤

 最近在学习系统移植的相关知识,在学习和调试过程中,发现了很多问题,也解决了很多问题,但总是对于我们的开发结果有一种莫名其妙的感觉,纠其原因,主要对于我们的开发环境没有一个深刻的认识,有时候几个...
  • victorwjw
  • victorwjw
  • 2017年06月05日 10:30
  • 5100

嵌入式linux应用程序移植方法总结

前段时间一直在做openCapwap的移植和调试工作,现在工作已接近尾声,编写本文档对前段工作进行一个总结,分享下openCapwap移植过程中的经验和感悟。江浩写的《CAPWAP移植进展.docx》...
  • wang_xya
  • wang_xya
  • 2013年12月19日 09:14
  • 1604

Windows下C++程序移植到Linux上的几个问题及解决方法

今天帮朋友从Windows下移植一个小程序到Linux下,遇到了两个问题,在这里分享一下解决方法。     刚开始觉得,移植应该很简单,就是重新再Linux下编译一次就可以了。但是遇到了,不少问题。下...
  • Sunshine_in_Moon
  • Sunshine_in_Moon
  • 2016年06月24日 14:11
  • 1558
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:浅谈如何将linux上的程序移植到windows上
举报原因:
原因补充:

(最多只允许输入30个字)