使用MSVC2013编译SVN中最新的源代码
reactos吧
全部回复
仅看楼主
level 10
有的同学想用MSVC编译ReactOS的源代码,但是官方Wiki要么看不懂,要么看得云里雾里的,所以我以个人经验结合ReactOS官方Wiki详细讲解说明一下如何用MSVC编译ReactOS
2013年12月28日 11点12分 1
level 10
安装完SVN客户端后,我们打开一个命令提示符窗口,利用命令行找到一个适合我们存放、编译源代码的位置。比如我觉得在D:\中很合适,那就切到D:\下。
然后输入svn co 后面再贴上SVN服务器上ReactOS源代码的地址,如下图
敲下回车,源代码就会自动下载。
这种方式获得的代码是可以随时更新的,只要在命令提示符中进入源代码所在的目录下,输入svn up就可以随时和服务器同步代码。
2013年12月28日 11点12分 3
level 10
装好Python后我们就可以开始编译Ninja了。
解包Ninja源代码,在VS(x86)命令提示符中切入到目录中,执行bootstrap.py。稍等片刻,目录下就会出现编译好的ninja.exe。
把ninja.exe复制到MSVC安装目录下vc的bin文件夹中,让CMake能识别出来。
Ninja准备好了我们还需要CMake。ReactOS使用CMake来管理编译。CMake有现成的我们就不需要自己编译一份了。
CMake:http://www.cmake.org/下载并安装,需要注意的是,CMake安装程序默认不会把安装路径添加到PATH变量中,我们在这一步需要调整一下。
万事俱备,我们就要开始编译了!
2013年12月28日 11点12分 6
level 10
编译之前需要注意一点,如果你的系统是英语的,或者是像法语德语之类的,不需要调整什么直接可以开始。但是如果是中文日文等环境,编译过程中会因为编码问题出错,这是MSVC编译器的Bug,使用RosBE中的GCC是不会有这个问题的。
那么怎么解决呢?我们先打开控制面板。切到时钟、语言和区域。
选择更改位置,然后切到管理选项卡
点更改系统区域设置,改成英文(美国)
按提示重启电脑。
2013年12月28日 11点12分 7
level 10
重启后,我们打开VS(x86)的命令提示符,切到ReactOS代码的目录,执行configure
等完成后我们依次执行cd output-VS12-i386,cd host-tools,ninja,cd ..\reactos,ninja来编译。这个过程我们只需要按部就班执行就行。只要没出现Error就没有问题。
编译依电脑配置而定,取决于CPU好坏,内存频率和硬盘速度。我的配置是
CPU:Intel Core i5-3210m
内存:DDR3 1600 4G+8G双通道
硬盘:Plextor M5S-128G
编译耗时大约10分钟,配置好的可以上上网啊,看看短片听听歌什么的,配置差的可以泡杯茶慢慢享受编译过程。总之源代码没有问题的话,最后一定是会完成的。
编译是编译完了,我们还需要生成安装CD和演示CD来测试成果。
还是在编译完成后的“reactos”目录中,执行ninja bootcd,ninja livecd。等操作全都完成后我们会在目录下发现新生成的bootcd.iso和livecd.iso。这时候我们就可以在虚拟机或者其他地方来测试我们新编译出来的ReactOS了。
下面是我之前编译后用VirtualBox跑的一张图。看上去和RosBE编译出来的差别不是很大。
以上就是使用MSVC编译SVN版ReactOS的操作
2013年12月28日 12点12分 8
level 10
补充:跳过Ninja的在执行configure时会有大串报错,这是因为ReactOS官方将Ninja设为默认,我们需要在configure后加上makefiles才能正常。之后编译过程的ninja都要改用nmake。
2013年12月28日 12点12分 9
level 7
前面的很多步骤没必要,可以直接下载RosBE,然后在VS的命令提示符下运行配置文件,生成一个编译target,然后进去用ninja编译。这些工具rosbe都打包好了的,不用自己编译,另外我尝试用2010 2012 2013 编译都可以成功,涉及到语言编码问题的是出在
D:\Project\OSDev\ReactOS\Src\cmake\localization.cmake
把其中的set(I18N_LANG all)改成set(I18N_LANG en-US)
然后D:\Project\OSDev\ReactOS\Src\dll\keyboard\CMakeLists.txt
删除除
add_subdirectory(kbdus)
add_subdirectory(kbdusa)
以外的行,重新进行ninja,然后就可以顺利编译不用改那个代码页,改那个代码页会造成一些严重的中文兼容性问题。
2014年01月16日 07点01分 10
RosBE的话太重复了,而且CMake、Subversion、Ninja不会默认加到PATH变量中。还有,即使只编译英文,有些代码会因为注释含有特殊字符导致编译失败。本来代码页就是英文的,所以用英文的代码页没有任何问题
2014年01月16日 10点01分
我说过并现在用着的就是改过的,不用改代码页完全没问题能编译过,有问题的就出在那些键盘布局的dll里面,把一些缺德的弄掉,完全无害了。
2014年01月20日 12点01分
回复 BinSys :嗯也可以。不过有的其他需求的人容易受到影响。
2014年01月20日 12点01分
回复 硝子之羽 :好教程,楼主无私。我正在研究NT6.X的引导部分,并研究把NT5.X引导部分增加UEFI支持,参考tiamo的神代码。
2014年01月20日 12点01分
level 5
为什么我觉得这比编译一个Linux内核简单的多?
编译完成可以自动生成iso?我以为多复杂呢。。。
下次玩Server 2003的时候试试看233。
2014年01月16日 13点01分 11
简单多了,几乎不用配置
2014年01月16日 13点01分
level 3
在哪里下载ninja?
2014年04月05日 00点04分 12
5L里的打包下载就好了[哈哈]
2014年04月05日 00点04分
回复 硝子之羽 :具体网站
2014年04月30日 10点04分
level 1
使用MSVC2013编译0.4.9后,得到的 bootcd.iso在VMware 上不能安装运行。
2018年08月05日 03点08分 13
level 8
666
2019年02月28日 11点02分 14
1