Windows下程序向Linux下移植.docxVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Windows下程序向Linux下移植

一、问题的提出??? 在程序员中有这样一个说法,若一个程序不能移植到Linux下,那这个程序将看不到未来。由于Linux操作系统源码公开是的,开发库等辅助工具都是源码公开的,这样就减少了程序的不可预知性,而且出现错误可以大家一起修正、完善,而Windows平台下所有的操作系统Api就给了个接口,即使出现莫名奇妙的错误也只能望着接口兴叹了。再加上Linux操作系统本身和它上面的许多工具软件是免费的,更是吸引了更多的公司和程序开发人员将程序开发转向Linux。在程序跨平台的移植过程中,将存在操作系统API的不同、文件名大小写识别不同、路径分隔符不同、不同开发平台数据类型的不一致等较一般性的问题。对于这些一般性的问题怎样很好的来解决呢?Linux下的工程都是使用makefile文件来管理的,怎样编写出相应的makefile文件呢?这些问题都是本文后面将要阐述的。二、解决思路?? 本文撰写的目的是为了提供Windows平台上程序向Linux下移植所碰到的一些典型问题及相应的解决方法,供要进行程序平台移植的同仁参考之用。文中还描述了使用pwlib库时makefile文件的编写方法,对于使用了pwlib库进行开发的程序能快捷的建立makefile工程文件,避免了自己手动书写makefile的繁杂工作。特别是3.2.6可以移植的数据类型一节中对于不同开发平台数据类型的不一致提出了一个简捷通用的解决方法,不用修改源程序中任何代码即可在Linux下使用Windows开发平台上的一些数据类型。三、实践情况3.1.Makefile的编写?????? Linux下一般都是使用make工具来管理和编译一个大的开发工程的所有源文件,make命令执行时,需要一个?Makefile?文件,以告诉make命令需要怎么样的去编译和链接程序,makefile关系到了整个工程的编译规则。一个工程中的源文件不计其数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,因为makefile就像一个Shell脚本一样,其中也可以执行操作系统的命令。在Windows的一些IDE如VC中将自动帮你生成相应的makefile,所有这些都是透明的,但在Linux下你就不能不自己写makefile了,会不会写makefile,从一个侧面说明了一个人是否具备完成大型工程的能力。???? make工具采用增量编译的方式,每次只编译被改动过确实需要编译的源文件,每次编译时make工具将自动判断那些源文件需要重新编译,当一个工程很大而又只改动了很少的几个源文件,这将节省很多时间。具体makefile文件的编写规则可以查看make的man?和info文档(在Linux命令行方式下输入:man make?或info make)。makefile文件的编写规则很多,重要的是怎样使用最简单的方式写出我们自己需要的makefile文件。??? 网上也有很多介绍资料,网上有一篇很好的介绍makefile文件编写的文章:下文将着重介绍使用pwlib开发库的工程的makefile的编写,但对于其它工程只需将common.mak文件中对pwlib库进行编译的脚本去掉也可适用。3.1.1使用pwlib开发库的工程的makefile的编写PWLib是Portable Windows Library的缩写,翻译为轻便的Windows类库.PWLib采用C++编写,设计初衷是为了能让Openh323在Windows和Unix的X-Windows下运行,?不过随着一步步的完善PWLib已经被跨平台的程序所广泛采用。查看Pwlib的主目录下/samples/hello_world/目录下例子程序的makefile文件可以发现该Makefile文件内容如下:# Simple makefile for the hello world programPROG????= helloSOURCES = hello.cxxifndef PWLIBDIRPWLIBDIR=$(HOME)/pwlibendifinclude $(PWLIBDIR)/make/ptlib.mak# End of Makefile实际上就是使用了Pwlib库的ptlib.mak文件,编译时需要的头文件,相应的编译选项都在ptlib.mak文件中设置好了。我们只需在该makefile文件所在目录下,命令行输入make all命令即可编译出程序的Release版本和Debug版本,它们分别放在当前目录的obj_linux_x86_r和obj_linux_x86_d子目录下。下面对该makefile中的内容进行解释:??????????PRO

文档评论(0)

almm118 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档