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

文章作者 100test 发表时间 2007:03:14 16:32:27
来源 100Test.Com百考试题网


经过上面的调整之后,势必因为Windows环境下没有某些头文件,比如poll.h,就会没有poll函数,没有dirent.h 就会没有dirent 结构体。而继续使得WinTar编译不过。这个时候就需要根据具体的编译错误信息进行细节修饰。当需要使用Windows下一些特殊的定义的时候请不要忘了在Config.h的最前面加入#include .

关于细节修饰,举个例子来说明。比如有个选项HAVE_INTTYPES_H

/* Define if  exists, doesn't clash with ,

and declares uintmax_t. */

#define HAVE_INTTYPES_H 1

通过分析代码可以发现,代码并不是需要一个完整的inttypes.h文件,而是为了一个uintmax_t的定义。在Visual Stdio的C Library中并没有inttypes.h这个文件,也没有uintmax_t这个定义。回溯Cygwin的include目录的inttypes.h文件,发现了uintmax_t的定义

typedef unsigned long long uintmax_t.

很简单的数据类型重定义。这么简单定义,完全可以从Cygwin的Include目录中单独拿出来做一个专用版本的inttypes.h加入到WinTar项目中。这样编译过程中uintmax_t没有定义的问题就解决了。解决这类问题的一般的做法也就是从Cygwin的Include目录里面拿出相关的头文件进行修改或者单独复制到WinTar的目录下面。[本文于2003年完成. 如需要转载 请联系jackforce at 163 dot com ]修改或者复制代码的原则是不再引入更多的定义或者头文件,仅取所需部分。其他类似的问题还有direct结构定义和相关函数。



相关文章


解析Linux新技术对象存储文件系统(1)
将Linux代码移植到Windows的简单方法(4)
将Linux代码移植到Windows的简单方法(3)
将Linux代码移植到Windows的简单方法(1)
将Linux代码移植到Windows的简单方法(2)
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛