尝试在Linux上编译KestrelHttpServer

Kestrel是目前在非Windows平台上运行ASP.NET 5应用程序的唯一可用Web服务器,但微软似乎将它冷落在一边,源代码更新很慢。

今天试着在Linux上编译Kestrel的源代码,遇到了很多问题。在这篇博文中记录一下。

运行编译命令:

./build.sh

出错信息:

-bash: ./build.sh: Permission denied

修复方法:

chmod +x build.sh

再次编译,出错:

./build.sh: line 31: packages/KoreBuild/build/kvm.sh: No such file or directory
./build.sh: line 35: kvm: command not found

修复方法:在build.sh中删除以下的代码:

if ! type k > /dev/null 2>&1; then
    source packages/KoreBuild/build/kvm.sh
fi

if ! type k > /dev/null 2>&1; then
    kvm upgrade
fi

继续编译,出错:

Unable to locate xunit.runner.kre >= 1.0.0-*
Writing lock file /data/git/KestrelHttpServer/test/Microsoft.AspNet.Server.KestrelTests/project.lock.json
Restore complete, 192ms elapsed
Total time 1067ms
Errors in /data/git/KestrelHttpServer/test/Microsoft.AspNet.Server.KestrelTests/project.json
    Unable to locate xunit.runner.kre >= 1.0.0-*

修复方法:将 test/Microsoft.AspNet.Server.KestrelTests/project.json 文件中的 kre 改为 aspnet,vim 命令如下:

:%s/kre/aspnet/g 

继续编译,出现错误:

/data/git/KestrelHttpServer/src/Kestrel/ServerFactory.cs(1,24): error CS0234: The type or namespace name ‘Hosting‘ does not exist in the namespace ‘Microsoft.AspNet‘ (are you missing an assembly reference?)
...

修复方法:修改 src/Kestrel/project.json 中的 frameworks 部分,修改为:

"frameworks": {
     "dnx451": { },
     "dnxcore50": { }
}

继续编译,出现新的错误:

src/Kestrel/ServerFactory.cs(4,27): error CS0234: The type or namespace name ‘ConfigurationModel‘ does not exist in the namespace ‘Microsoft.Framework‘ (are you missing an assembly reference?)

修复方法:在 src/Kestrel/project.json 中添加 Microsoft.Framework.ConfigurationModel 的引用

{
    "dependencies": {        "Microsoft.Framework.ConfigurationModel": "1.0.0-*"    }
}

继续编译,出现新的错误:

src/Kestrel/ServerRequest.cs(1,24): error CS0234: The type or namespace name ‘HttpFeature‘ does not exist in the namespace ‘Microsoft.AspNet‘ (are you missing an assembly reference?)

修复方法:在 src/Kestrel/project.json 中添加 Microsoft.AspNet.HttpFeature 的引用

"Microsoft.AspNet.HttpFeature": "1.0.0-*"

但该修复方法无效,依然出现同样的错误。。。就卡在这,没找到解决方法。

于是,这次编译尝试 Kestrel 失败。

时间: 2024-12-25 11:47:04

尝试在Linux上编译KestrelHttpServer的相关文章

尝试在Mac上编译DNX

自从XRE改名为DNX至今,从来没有在Mac OS X上成功编译过DNX.一直很纳闷,难道DNX的开发人员不用Mac?今天突然明白了,DNX的开发人员真的不用Mac.而且DNX用的2个持续集成服务AppVeyor与Travis,一个是Windows环境,一个是Linux环境,就是没有Mac OS X环境. 看来不能指望DNX的开发人员短期内解决这个问题了,只能自己动手. 编译的错误信息如下(编译命令./build.sh): Restore complete, 725ms elapsed info

在64位linux上编译32位程序

ld指令有一个选项:--oformat output_format,用于指定输出文件的格式.输入文件./kernel/kernel.o等是elf32格式,当前系统是64位,而ld默认生成的文件格式是elf64-x86-64:因此会出现"ld: warning: i386 architecture of input file `./kernel/kernel.o' is incompatible with i386:x86-64 output"这样的提示.之前,将系统从三墩转移到我自己的

Linux上编译Redis4.0.2

Linux上安装部署Redis4.0.2 安装Redis4.0.2,需要先安装依赖: yum -y install gcc gcc-c++ libstdc++-devel tcl -y 下载Redis4.0.2的安装包: wget http://219.238.7.71/files/403400000ABE0C0C/download.redis.io/releases/redis-4.0.2.tar.gz 解压缩: tar -zxvf redis-4.0.2.tar.gz -C /usr/loc

在64位linux上编译32位程序 for i386 intel

编辑中 # ld -V GNU ld version 2.15.92.0.2 20040927 Supported emulations: elf_x86_64 elf_i386 i386linux #ld -m elf_i386 Along with the -m32 flag in gcc, you may need to include the -melf_i386 flag for ld to properly link the 32bit object files to the 32b

go在Linux上编译Windows执行文件

参考:http://studygolang.com/topics/21 (1)首先进入go/src 源码所在目录,执行如下命令创建目标平台所需的包和工具文件. $ cd /usr/local/go/src$ CGO_ENABLED=0 GOOS=linux GOARCH=amd64 ./make.bash 如果是 Windows 则修改 GOOS 即可.$ CGO_ENABLED=0 GOOS=windows GOARCH=amd64 ./make.bash-------------------

在Linux上编译dotnet cli的源代码生成.NET Core SDK的安装包

.NET 的开源,有了更多的DIY乐趣.这篇博文记录一下在新安装的 Linux Ubuntu 14.04 上通过自己动手编译 dotnet cli 的源代码生成 .net core sdk 的 deb 安装包. 1)安装一个现有版本的 .net core sdk sudo sh -c 'echo "deb [arch=amd64] https://apt-mo.trafficmanager.net/repos/dotnet-release/ trusty main" > /etc

在linux上编译C

1. 写好源代码后,使用gcc编译器来编译 通过函数来查找所需包含的头文件 man 2/3 函数名 // man 2 一般用于查找linux系统里的函数 // man 3 是C通用的函数 通过头文件来查找头文件里声明的函数 man 头文件名 // 如 man stdio.h gcc test.c //编译test.c里的代码,默认生成可执行文件 a.out gcc test.c -o myexe //指编译生成的可执行文件名为myexe 执行: ./myexe 或者 路径/myexe2. 计算机

在SUSE LINUX上编译安装CouchDB1.5.0

按照这个步骤装了两台,在SUSE上安装是没有问题了,打包的话还在研究,查了一下光拷贝编译后文件有些问题. 软件版本及依赖: 1.SpiderMonkey 1.7.0 2.icu4c 4.2.1 3.libcurl 7.36.0 4.ncurses 5.9 5.openssl 1.0.1g 6.erlang R16B03 依赖 ncurses.openssl 7.couchDB 1.5.0 依赖上述所有 SpiderMonkey: js-1.7.0.tar.gz 1 tar 2 cd 3 make

Linux上编译CoreCLR源代码

>>Build日期:2015-2-5. Linux发行版用的是CentOS 6.5,操作步骤: 1)配置git: git config --global http.sslverify false 2)签出github上的CoreCLR代码库: git clone https://github.com/dotnet/coreclr.git 3)安装cmake: yum install cmake 4)安装clang: yum install clang 5)运行build命令: sh build