网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 操作系统 > Linux
本月文章推荐
.实用技巧 从硬盘安装Fedora-9-i3.
.双机(多机)自动互备份方案.
.Linux系统安装模式下硬盘分区的选.
.Linux的高效的数据传输技术-Relay.
.Linux Shadow-Password-HOWTO - .
.如何用鼠标拷贝与粘贴?.
.实用技巧:Linux系统清除Grub的几.
.Ubuntu Linux 7.10中安装飞鸽传书.
.Linux系统中加入自定义Shell为系.
.Linux系统下挂载Windows分区的方.
.Linux下文件的atime, mtime和cti.
.Linux Remote-Boot mini-HOWTO.
.Linux/Unix环境下的make命令详解.
.快速体验Linux的3种方式.
.怎样让你的Linux使用起来更像Win.
.为网络启动和软硬件升级建立TFTP.
.Linux操作操作两种常见启动故障解.
.Linux下即插即用设备的安装.
.RPM 的使用.
.系统管理:Linux系统下临时文件T.

将VC程序移植到Linux系统的几点经验心得

发表日期:2008-5-28


 

有时我需要制作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++进行编写。同时将应用程序使用的线程数最小化,线程越多越难移植。将输入输出模块独立出来。最后划分出控制模块,这个模块与用户进行交互。

上一篇:重新安装Windows后Ubuntu 8.04启动恢复 人气:1129
下一篇:Linux系统下用一条命令批量修改图片尺寸 人气:740
浏览全部Linux的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐