Build SSCLI20 under VS2008 full Document (完全手册)
以前build过几次sscli2都成功了,这次换了个新的环境,没想到出了一大堆的问题。折腾了半天,最终搞定,把解决问题的过程和方法都记录下来。
首先说说build的过程中参考过的链接和资源。
- 首先就是sscli自带的文档:Building the Shared Source CLI 2.0 and C# 2.0 Source Tree
(\sscli20\docs\buildtools\building_sscli.html),这里详细介绍了build的过程,build中需要用到的工具和方法,等。
- Shared Source CLI 2.0 Build Environment Variable Scripts(env.bat, env.csh, env.sh)(sscli20\docs\buildtools\env.html),详细介绍了设置环境变量和buildall等工具的参数设置。Build中用到的其它工具的参考说明可以到sscli20\docs\buildtools这个目录下找到。
- 张羿的“.NET / Rotor 源码研究1 - Building Rotor”,链接地址为:
http://blog.csdn.net/ATField/archive/2006/12/31/1471465.aspx
- Jeremy Kuhne's “SSCLI 2.0 and Visual Studio 2008”,URL:
http://blogs.msdn.com/jeremykuhne/archive/2008/02/19/sscli-2-0-and-visual-studio-2008.aspx
- Xwang的在Visual Studio 2008的环境下Build SSCLI 2.0(ROTOR),URL:
http://www.cnblogs.com/zhzkl/archive/2008/05/13/1194258.html
- Building SSCLI20 (Rotor) in VS2008,URL:
http://code.msdn.microsoft.com/BuildRotorInVS2008,by codekaizen
还有就是发现问题和解决问题的过程了.
首先,如果是需要再AMD的系列CPU上面Build,最好参考codekaizen提供的源码修改包。其正对AMD的cpu再上面的4上面做了一些小的修改:
l In the modified win.env.bat file, I added @set PROCESSOR_ARCHITECTURE=x86 to line 106 to get it to build under AMD64. The build environment was X86 already, but apparently it wasn't enough.
l On line 144 of the modified tools\nmake\def.mak file, comment out #CFLAGS = $(CFLAGS) -Wp64, since the flag is deprecated.
l This one didn't seem right, but it was the most expedient: comment out lines 73 to 79 in pal\exception.c, which is the declaration of a function RtlUnwind which is apparently never used or defined. It could be some platform specific call, which works on a Windows machine.
其中如果是再intel的cpu上面,按照他说的comment了TrlUnwind,会出现:
d:\rotor\sscli20\pal\win32\exception.c(143) : error C2094: label 'RtlUnwind' was undefined
NMAKE : fatal error U1077: '"C:\Program Files\Microsoft Visual Studio 9.0\VC\BIN\cl.EXE"' : return code '0x2'
这样的错误,这个时候,把他再pal\win32的exception.c第73行对
/*
WINBASEAPI
VOID
WINAPI
RtlUnwind(PVOID TargetFrame,
PVOID TargetIp,
PVOID ExceptionRecord,
PVOID ReturnValue);
*/
的注释,去掉即可。
另外说说VC开发环境变量设置的问题。
修改sscli源码让其在VS2008下面运行的第一步,就是要修改MSVCDIR和MSDEVDIR两个环境变量。在sscli20\docs\buildtools\env.html这个地方,可以看到MSVCDir的定义,指向的是:%VCINSTALLDIR%\VC,指向的是Microsoft Visual C++ 2005 root directory。
如果不修改msvcdir变量,在env debug的时候,就会报出msvcdir没有设置的错误。
修改\sscli20\win.env.bat:
- change %VS80COMNTOOLS% on line 37 to %VS90COMNTOOLS%
- after line 42, insert the following:
REM Set the SDK path
if "%ROTOR_WINSDKDIR%"=="" set ROTOR_WINSDKDIR=%WindowsSdkDir%
if "%ROTOR_WINSDKDIR%"=="" set ROTOR_WINSDKDIR=%MSVCDIR%\PlatformSDK
call :ShortName "%ROTOR_WINSDKDIR%"
set ROTOR_WINSDKDIR=%RESULT%
想这样因为环境变量引起的问题还挺多,可以参考Jeremy Kuhne的文章一一修改。另外,也可以看看上面的几个链接中他们在build的时候遇到的问题与解决方法。
到Xwang的blog上面把他的那个包给下载下来,然后直接覆盖到sscli中,如果你出现code编码的保存方式不同造成的错误,请参考zhangyi的文章修改OS的location。如果你出现不能正确识别操作系统的错误,也请参考zhangyi的那篇文章。如果你出现一些环境变量的莫名其妙的问题,请参考xwang的解决方法。
运行env debug和buildall,
十分钟之后,build完成好了,就可以运行:
D:\Rotor\sscli20>cd binaries.x86dbg.rotor
D:\Rotor\sscli20\binaries.x86dbg.rotor>csc ..\samples\hello\hello.cs
Microsoft (R) Shared Source CLI C# Compiler version 2.0.0001
for Microsoft (R) Shared Source CLI version 2.0.0
Copyright (C) Microsoft Corporation. All rights reserved.
D:\Rotor\sscli20\binaries.x86dbg.rotor>clix hellp.exe
hellp.exe: The system cannot find the file specified.
D:\Rotor\sscli20\binaries.x86dbg.rotor>clix hello.exe
Hello World!
Enjoy Rotor, Enjoy Code, and Enjoy research! Have fun!
Lbq1221119@cnblogs, first post at http://sscli.cnblogs.com
11/11/2008 9:42 PM
参考:
http://www.cnblogs.com/lbq1221119/category/117125.html
转载于:https://www.cnblogs.com/hellolong/articles/5821109.html
Build SSCLI20 under VS2008 full Document (完全手册)相关推荐
- windows 下 vs2008 编译 OpenCV 库
1. 下载 opencv-2.4.9.exe 下面地址可以用迅雷: http://downloads.sourceforge.net/project/opencvlibrary/opencv-win ...
- VS2008(2010)开发C++
命令行执行vc的用法参见: http://blog.csdn.net/memory_xj/archive/2008/10/27/3156781.aspx VS 2008 找不到"window ...
- c语言 解析pdf 开源库,使用第三方开源库mupdf,实现pdf转png
step1: 下载SumatraPDF工程: https://github.com/Bitterbell/Pdf-Reader muPdf 库是一个开源的 pdf 读取器,但是在 github 上下载 ...
- Lucene in Action中文版
Lucene in Action 中文版 第一部分 Lucene核心 1. 接触Lucene 2. 索引 3. 为程序添加搜索 4. 分析 5. ...
- Lucene in Action 中文版
Lucene in Action 中文版 ERIK HATCHER OTIS GOSPODNETIC zw_ren译 主要内容 第一部分 Lucene核心 1. 接触Lucene 2. ...
- Lucene in Action(简体中文版)
共10部分 第一部分 Lucene核心[code="java"][/code] 1. 接触Lucene 2. 索引 3. 为程序添加搜索 4. 分析 5. 高极搜索技术 6. 扩展 ...
- Jdom makes xml easy
核心提示:XML 是数据领域的 Java 语言,它使数据独立于创建它的软件和该软件所在的操作系统,就像 Java 使软件独立于操作系统一样. Jdom makes xml easy , said by ...
- JDOM是JAVA中最常用的一种解析XML的工具
JDOM是JAVA中最常用的一种解析XML的工具,我们可以从JDOM的官方网站www.jdom.org 下载JDOM1.0.ZIP压缩包,将其解压,将JDOM.JAR文件配置到classpath当中去 ...
- android-XML解析Dom,Sax,Pull
android平台上解析xml的常见的工具有三种:dom,sax,pull. 第一种是DOM, 它的特点是一次全部加载,如果对于数据量小的情况下,它的效率还可以,如果XML文件很大的情况下,速度就会慢 ...
最新文章
- 优化Linux系统中的服务
- 数学建模学习笔记——优劣解距离法(评价类)
- activeMQ的三种通讯模式
- OnPaint()函数的作用原理
- Nancy跨平台开发总结(三)发布到Jexus Web服务器
- 使用uuid作为数据库主键,被技术总监怼了!
- 这 3 种 DDD 分层架构的模式,你掌握了么?
- solaris 关闭、释放socket端口
- 开启Windows文件共享必须开启的两个服务
- 爱快--虚拟机单网卡(带机上网)
- 20200602每日一句
- laravel手册链接
- app版windows95
- RT-thread Nano移植并实现多线程任务
- PostScirpt打印机驱动程序
- 【JavaWeb从零到一】↣JDBC连接池JDBCTemplate
- STM32理论 —— 综述、GPIO
- 关于视频变速播放软件
- 二年级课程表(3月1日-3月4日)
- 数学知识——约数(因数)
热门文章
- 查询XML节点 value
- ASP.NET 2.0 中配合 Master Page 使用的优化 CSS 模型
- android设备未指定怎么办,APKpath未指定为模块“示例 – 示例”
- 一个比特币要挖多久?
- 区块链技术之以太坊ETH白皮书
- pytorch深度学习_了解如何使用PyTorch进行深度学习
- Oracle数据库的逻辑结构和存储层次
- Java培训学习步骤有哪些
- vue下的bootstrap table + jquery treegrid, treegrid无法渲染的问题
- 我为我Windows Home Server 预热