reactos 0.0.21 编译

为了更好的学习reactos,特意找到了一个很早的版本,用svn取下,http://svn.reactos.org/reactos/tags/ReactOS-0.0.10/

reactos带的编译环境里的make版本,有点问题。例如在一级Makefile里,调用make –C XX,会导致错误。
gcc版本呢3.4.5

所以采用msys环境。
编译的时候出现几个问题,解决方法如下:
1. 修改rules.mak
将SEP := \$(EMPTY_VAR)
改为
SEP := /

2.修改tss.h
KTSS __attribute__((packed));
改成
__attribute__((packed)) KTSS;

3.修改ntos\keyboard.h
KEY_EVENT_RECORD PACKED;
改为
PACKED KEY_EVENT_RECORD;


4.修改ntoskrnl\Makefile
CFLAGS += -I./include -D__NTOSKRNL__ $(CFLAGS_DBG) -Wall -Werror
改为
CFLAGS += -I./include -D__NTOSKRNL__ $(CFLAGS_DBG) -Wall #-Werror

5.修改reactos\lib\msafd\misc
((PVOID)helper->EntryTable.##identifier) = entry; \
改为
((PVOID)helper->EntryTable.identifier) = entry; \

6.修改include\structs.h
将所有的__attribute__((packed))和PACKED 问题,按照问题2和问题3中的办法解决。

7.修改\lib\user32\Makefile
将-Werror去掉

8. 修改\subsys\win32k\objects\dib.c
在最前面的位置加入5个函数的声明

VOID BitmapToSurf(HDC hdc, PSURFGDI SurfGDI, PSURFOBJ SurfObj, PBITMAPOBJ Bitmap);
int DIB_BitmapInfoSize (const BITMAPINFO * info, WORD coloruse);
RGBQUAD *DIB_MapPaletteColors(PDC dc, LPBITMAPINFO lpbmi);
HPALETTE BuildDIBPalette(BITMAPINFO *bmi, PINT paletteType);
HBITMAP DIB_CreateDIBSection(
  PDC dc, BITMAPINFO *bmi, UINT usage,
  LPVOID *bits, HANDLE section,
  DWORD offset, DWORD ovr_pitch);



9.修改C:\ros\ros.0.0.21\reactos\subsys\win32k
#define FT_ERROR( varformat )  FT_XCAT( FT_Message, varformat )
改为
#define FT_ERROR( varformat )  //FT_XCAT( FT_Message, varformat )

10.修改\subsys\win32k\freetype\include\freetype\internal\ftdebug.h
#define FT_CAT( x, y )   x ## y
改为
#define FT_CAT( x, y )   x  y

10.修改\drivers\dd\vga\display\objects\paint.c
doBitBlt:
改为
//doBitBlt:

11.修改reactos\include\net\ndis.h
#define DECLARE_UNKNOWN_PROTOTYPE(Name) \
    typedef VOID (*##Name)(VOID);
改为
#define DECLARE_UNKNOWN_PROTOTYPE(Name) \
    typedef VOID (* Name)(VOID);





OK,搞定!

转载于:https://www.cnblogs.com/fanzi2009/archive/2009/05/20/1470708.html

猜你喜欢

转载自blog.csdn.net/weixin_34210740/article/details/94192516