将VC程序移植到Linux系统的几点经验心得
有时我需要制作LINUX与WINDOWS下都可以运行的程序.在一般情况下,我会选择在WINDOWS平台下完成初始的开发.VC提供的图形化的编辑与调试界面的确较GCC要高产得多.在完成了测试之后,就开始把它向LINUX移植,移植的过程会有一些需要注意的地方.下面就是我的一些心得. 文件名 ext2文件系统对文件名是大小写敏感的,当你在这种文件系统上进行编译的时候,源文件中出现的#include 语句小心了.在VC环境下,由IDE自动生成的#include 语句,其中的文件名全部是小写的.,你需要在一开始就注意这个问题,严格的使用大小写敏感的文件名格式,避免在LINUX下编译时出现找不到头文件的错误. 数据类型 千万不要使用VC独有的数据类型,象__int16, __int32 和__int64 等等,你无法保证其它的编译器能否支持它们.特别是__int64,它确实简化了编程工作,但是当你的逻辑里充满了这样的数据类型的时候,改动就变得无比困难了.还有一个问题就是,我们经常在VC中使用WORD,DWORD,INT,UINT这样的扩展数据类型,不直接使用编译器的数据类型有助于提高在不同平台之间的可移植性.但是LINUX下没有定义这样的类型啊?其实只需要将windows.h和basetypes.h中对这些数据进行定义的语句复制到一个头文件中,再在linux下包括进来就行了. 关键字 关键字是比较好处理的东西,凡是VC中带两个下划线的关键字,比方__asm都是VC独有的.尽量不使用它们,如果实在无法避免,就用#ifdef 和#endif为LINUX和WINDOWS编写两个版本. MAKEFILE的编写 你可以先用VC导出一个makefile,然后对其进行修改,但我倾向于从中拷贝出一段来生成GCC的makefile,比起手工编写要快许多. 程序设计结构 这绝对是移植过程中问题最大的一个部分.应用程序难免要用到操作系统的服务,如果完全使用标准的C/C 编写,这将不是一个问题,但是当我们使用到多进/线程,管道,或者对WINDOWS图形界面的程序进行移植的时候,这个问题就变得突出了.我们应当从设计上就为程序的移植打好基础. 解决这个问题搞清楚应用程序的逻辑模块.对于这个模块使用标准的C/C 进行编写.同时将应用程序使用的线程数最小化,线程越多越难移植.将输入输出模块独立出来.划分出控制模块,这个模块与用户进行交互. 拥有帝国一切,皆有可能。欢迎访问phome.net 拥有帝国一切,皆有可能。欢迎访问phome.net |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |