以前build过几次sscli2都成功了,这次换了个新的环境,没想到出了一大堆的问题。折腾了半天,最终搞定,把解决问题的过程和方法都记录下来。

首先说说build的过程中参考过的链接和资源。

  1. 首先就是sscli自带的文档:Building the Shared Source CLI 2.0 and C# 2.0 Source Tree

(\sscli20\docs\buildtools\building_sscli.html),这里详细介绍了build的过程,build中需要用到的工具和方法,等。

  1. 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这个目录下找到。
  2. 张羿的“.NET / Rotor 源码研究1 - Building Rotor”,链接地址为:

http://blog.csdn.net/ATField/archive/2006/12/31/1471465.aspx

  1. 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

  1. Xwang的在Visual Studio 2008的环境下Build SSCLI 2.0(ROTOR),URL:

http://www.cnblogs.com/zhzkl/archive/2008/05/13/1194258.html

  1. 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:

  1. change %VS80COMNTOOLS% on line 37 to %VS90COMNTOOLS%
  2. 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 (完全手册)相关推荐

  1. windows 下 vs2008 编译 OpenCV 库

    1. 下载  opencv-2.4.9.exe 下面地址可以用迅雷: http://downloads.sourceforge.net/project/opencvlibrary/opencv-win ...

  2. VS2008(2010)开发C++

    命令行执行vc的用法参见: http://blog.csdn.net/memory_xj/archive/2008/10/27/3156781.aspx VS 2008 找不到"window ...

  3. c语言 解析pdf 开源库,使用第三方开源库mupdf,实现pdf转png

    step1: 下载SumatraPDF工程: https://github.com/Bitterbell/Pdf-Reader muPdf 库是一个开源的 pdf 读取器,但是在 github 上下载 ...

  4. Lucene in Action中文版

    Lucene in Action 中文版  第一部分 Lucene核心 1.      接触Lucene  2.      索引 3.      为程序添加搜索 4.      分析 5.      ...

  5. Lucene in Action 中文版

    Lucene in Action 中文版 ERIK HATCHER OTIS GOSPODNETIC zw_ren译 主要内容 第一部分 Lucene核心 1.      接触Lucene 2.    ...

  6. Lucene in Action(简体中文版)

    共10部分 第一部分 Lucene核心[code="java"][/code] 1. 接触Lucene 2. 索引 3. 为程序添加搜索 4. 分析 5. 高极搜索技术 6. 扩展 ...

  7. Jdom makes xml easy

    核心提示:XML 是数据领域的 Java 语言,它使数据独立于创建它的软件和该软件所在的操作系统,就像 Java 使软件独立于操作系统一样. Jdom makes xml easy , said by ...

  8. JDOM是JAVA中最常用的一种解析XML的工具

    JDOM是JAVA中最常用的一种解析XML的工具,我们可以从JDOM的官方网站www.jdom.org 下载JDOM1.0.ZIP压缩包,将其解压,将JDOM.JAR文件配置到classpath当中去 ...

  9. android-XML解析Dom,Sax,Pull

    android平台上解析xml的常见的工具有三种:dom,sax,pull. 第一种是DOM, 它的特点是一次全部加载,如果对于数据量小的情况下,它的效率还可以,如果XML文件很大的情况下,速度就会慢 ...

最新文章

  1. 优化Linux系统中的服务
  2. 数学建模学习笔记——优劣解距离法(评价类)
  3. activeMQ的三种通讯模式
  4. OnPaint()函数的作用原理
  5. Nancy跨平台开发总结(三)发布到Jexus Web服务器
  6. 使用uuid作为数据库主键,被技术总监怼了!
  7. 这 3 种 DDD 分层架构的模式,你掌握了么?
  8. solaris 关闭、释放socket端口
  9. 开启Windows文件共享必须开启的两个服务
  10. 爱快--虚拟机单网卡(带机上网)
  11. 20200602每日一句
  12. laravel手册链接
  13. app版windows95
  14. RT-thread Nano移植并实现多线程任务
  15. PostScirpt打印机驱动程序
  16. 【JavaWeb从零到一】↣JDBC连接池JDBCTemplate
  17. STM32理论 —— 综述、GPIO
  18. 关于视频变速播放软件
  19. 二年级课程表(3月1日-3月4日)
  20. 数学知识——约数(因数)

热门文章

  1. 查询XML节点 value
  2. ASP.NET 2.0 中配合 Master Page 使用的优化 CSS 模型
  3. android设备未指定怎么办,APKpath未指定为模块“示例 – 示例”
  4. 一个比特币要挖多久?
  5. 区块链技术之以太坊ETH白皮书
  6. pytorch深度学习_了解如何使用PyTorch进行深度学习
  7. Oracle数据库的逻辑结构和存储层次
  8. Java培训学习步骤有哪些
  9. vue下的bootstrap table + jquery treegrid, treegrid无法渲染的问题
  10. 我为我Windows Home Server 预热