首页 | 资讯动态 | linux基础 | 系统管理 | 网络管理 | 编程开发 | linux数据库 | 服务器技术 | linux相关 | linux认证 | 嵌入式 | 下载中心 | 专题 | linux招聘 | HR | 镜像
OKLinux中文技术站
·设为首页
·加入收藏
·联系我们
系统管理: 中文环境 系统管理 桌面应用 内核技术 | Linux基础: 基础入门 安装配置 常用命令 经验技巧 软件应用 | Linux数据库: Mysql Postgre Oracle DB2 Sybase other
网络管理: 网络安全 网络应用 Linux服务器 环境配置 黑客安全 | 编程开发: PHP CC++ Python Perl Shell 嵌入式开发 java jsp | PHP技术: PHP基础 PHP技巧 PHP应用 PHP文摘
搜索中心 Linux招聘 Linux专题 Apache | Linux相关: 硬件相关 Linux解决方案 Linux认证 企业应用 其它Unix | 相关下载: 资料下载 参考手册 开发工具 服务器类 软路由 其它
 技术搜索:
会员中心 注册会员 高级搜索  
  → 当前位置:首页>系统管理>内核技术>正文

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

http://www.oklinux.cn  2008-05-28     会员收藏  游客收藏  【 】 
您查看的文章来源于http://www.oklinux.cn

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


上一篇:Linux系统占有率有望在2008年突破4%   下一篇:Fedora和XP双系统中网卡Realtek冲突问题

收藏于收藏夹】 【评论】 【推荐】 【打印】 【关闭
相关文档
·内核升级后 出现initramfs错误问题解决
·在Linux中开机自动运行普通用户脚本程序
·Linux系统上定时运行Java程序的方法
·Uboot对非Linux kernel的引导
·Linux系统下Socket编程地址结构介绍
·在嵌入式Linux环境下制作QPF字库的方法
·在Ubuntu Linux 8.04上构建GCC和GTK环境
·Linux下malloc/free与new/delete的区别
·Linux系统驱动编译与运行
·嵌入式Linux系统下时间的实现
·Linux内核bootsplash功能的实现方法介绍
·Linux系统JDK中文字体设置方法介绍
·Linux下用GTK和socket实现简单的聊天室
·Linux Iptables 内核2.6.18添加time模块
·4G内存下Linux Mtrr表不正确的解决方法
·在Linux系统下JDK环境配置方法介绍
发表评论
密码: 匿名评论
评论内容:

(不超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规)
 
  最新文档
·再来个源代码分析阅读器:LXR
·源代码阅读利器:Source Navigator
·Linux系统下的MySQL数据库开发技术
·Fedora在下一代用户群鼓励使用和参与开
·centos5.1下编译Linux内核
·Suse Linux系统下JAVA AWT界面乱码问题
·在Linux下发布程序需要注意版本的软件
·使用initrd文件系统 U-boot引导Linux方
·Linux系统下后台执行程序
·Linux如何在系统运行过程中修改内核参
·Linux系统进程的几个用户ID及其转换方
·Linux系统下安装phpmyadmin方法介绍
  阅读排行
· 深入理解LINUX内核中文版下载地址
·Linux操作系统源代码详细分析(一)
·Bochs 调试技术
· Linux下通用线程池的创建与使用(上)
·基于S3C44B0微处理器的uClinux内核引导
·软件产品发布流程
·Linux操作系统源代码详细分析(二)
·Linux操作系统的内核编译内幕详解
· Linux内核编程实战经验谈
·Linux系统线程同步:互斥量(mutex)
·Kernel command using Linux system ca
·linux 内核版本号
·推荐:Linux用户态与内核态的交互
·Linux 2.6内核的编译步骤及模块的动态
·解析Linux中的VFS文件系统机制
网摘收藏: