为了更好的学习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