总结如下:
1、reactos是一款全面兼容winapi接口的供学习研究目的的操作系统,属于自由软件,同时也是开源的(www.reactos.org)。另外,reactos与wine项目是属于同一拨人开发的,所以这两者分享许多共同的成果。
2、从reactos的源码安装时,是采用mingw32-gcc来编译源代码的。(最少需要mingw32-gcc和mingw32-g++,以及mingw32-make等模块,另外对mingw32版本也有要求)。从官方文档中获知,编译reactos的mingw32-gcc可以是交叉编译器,也可以是本地编译器。
3、我编译的reactos版本是0.2.8,可从网上下载reactos0.2.8-REL-src.zip文件。
4、当我使用版本为3.4.2的本地的mingw来编译reactos时,中途报错,说gcc版本可能不符合要求!因此我便接着采用版本为3.4.4的本地的mingw来重新编译reactos,这时中途又报错了,是一个g++的头文件错误,error信息如下:
E:/mingw/bin/../lib/gcc/mingw32/3.4.4/../../../../include/c++/3.4.4/bits
/stl_uninitialized.h: In member function `void std::vector<_Tp,_Alloc>::reserve
(size_t) [with _Tp = KeyMap,_Alloc = std::allocator<KeyMap>]':
E:/mingw/bin/../lib/gcc/mingw32/3.4.4/../../../../include/c++/3.4.4/bits
/stl_uninitialized.h:82: warning: '__cur' might be used uninitialized in this fu
nction
(从网上找到一个网页,也是反映同样的这个错误!http://www.reactos.org/forum/viewtopic.php?t=1073),有开发者回复中说,需要使用mingw32-gcc3.4.3版本,或者升级到mingw32-gcc4.0版本。
5、于是便找到了mingw4.0的二进制安装版进行install后,再次编译reactos时,又报了一大堆错误,都是与mingw-winapi相关的,可以断定是这个mingw4.0的二进制发布版好象不太全面。因此如果要想继续使用mingw4.0来编译reactos,那么只能自己先编译出完整的mingw4.0;但这也太麻烦了,于是找mingw32-gcc3.4.3,没找着。
6、最后在http://www.reactos.org/wiki/index.php?title=HOWTO/setup_a_build_environment_for_Windows&redirect=no页面中获知,reactos开发组已经集成并建立了一个reactos的编译环境,叫做ReactOS Build Environment (RosBE),于是乎,download下ReactOS Build Environment 0.1-3.4.2.exe文件,安装后,发现它集成的mingw-gcc版本也是3.4.2的。重新编译reactos,成功!!!注意!编译大概需要1.5G的磁盘空间。
7、另外一篇关于在linux系统上编译reactos的文章的link是:http://www.reactos.org/wiki/index.php/HOWTO/setup_a_build_environment_for_Linux
8、编译reactos时,当前目录的obj-i386子目录是中间文件(如.o文件)的输出位置;而output-i386子目录是最终模块(包括exe、dll和sys)的输出位置。它们都可以通过设置相关的环境变量来改变其缺省的输出位置,详细情况请参考当前目录的Makefile文件.