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.sh
6)build结果——失败!错误信息如下:
Commencing CoreCLR Repo build
Checking pre-requisites...
Commencing build of native components for amd64/debug
Invoking cmake with arguments: /data/git/coreclr DEBUG
Detected Linux x86_64
-- Configuring done
-- Generating done
-- Build files have been written to: /data/git/coreclr/binaries/CMake
Executing make
[ 0%] Building CXX object src/pal/src/CMakeFiles/CoreClrPal.dir/exception/seh.cpp.o
In file included from /data/git/coreclr/src/pal/src/exception/seh.cpp:22:
In file included from /usr/bin/../lib/gcc/x86_64-redhat-linux/4.4.7/../../../../include/c++/4.4.7/typeinfo:34:
In file included from /usr/bin/../lib/gcc/x86_64-redhat-linux/4.4.7/../../../../include/c++/4.4.7/exception:148:
/usr/bin/../lib/gcc/x86_64-redhat-linux/4.4.7/../../../../include/c++/4.4.7/exception_ptr.h:143:13: error: unknown type
name 'type_info'
const type_info*
^
1 error generated.
make[2]: *** [src/pal/src/CMakeFiles/CoreClrPal.dir/exception/seh.cpp.o] Error 1
make[1]: *** [src/pal/src/CMakeFiles/CoreClrPal.dir/all] Error 2
make: *** [all] Error 2
Failed to build coreclr components.
【更新】
>>Build日期:2015-2-5晚上(编译成功)。
后来,将遇到的这个问题在github coreclr issue #77中提交了一下,很快有人回复编译器只能用clang 3.5。
看了一下CentOS安装的最新版clang是clang 3.4.2,看来是这个问题引起的。
要到LLVM官网上一看,预编译好的clang 3.5有Ubuntu的版本,但没有CentOS的。
于是,干脆将操作系统换成Ubuntu。在Ubuntu上用apt-get install clang安装,也是clang 3.4,只有手动安装clang 3.5。
手动安装参考的是园子里的这篇博文:在 Linux 下使用 clang 3.0 + llvm 3.0 + libc++。
在Ubuntu中编译CoreCLR的实际操作步骤如下:
1)安装cmake: apt-get install cmake
2)下载预编译好的clang 3.5: wget http://llvm.org/releases/3.5.0/clang+llvm-3.5.0-x86_64-linux-gnu-ubuntu-14.04.tar.xz
3)解压下载好的clang 3.5压缩包: tar xvf clang+llvm-3.5.0-x86_64-linux-gnu-ubuntu-14.04.tar.xz
4)进入解压后的文件夹: cd clang+llvm-3.5.0-x86_64-linux-gnu
5)复制其中的文件至/usr: cp -R * /usr
6)编译CoreCLR: sh build.sh
7)等待编译结果:
Commencing CoreCLR Repo build
build.sh: 101: build.sh: Bad substitution
build.sh: 161: [: false: unexpected operator
Checking pre-requisites...
Commencing build of native components for amd64/debug
Invoking cmake with arguments: /data/git/coreclr DEBUG
Detected Linux x86_64
-- Configuring done
-- Generating done
-- Build files have been written to: /data/git/coreclr/binaries/CMake
Executing make
[ 0%] Building CXX object src/pal/src/CMakeFiles/CoreClrPal.dir/exception/seh.cpp.o
...
结果。。。编译成功了!
[100%] Built target mscordaccore
Install the project...
-- Install configuration: "DEBUG"
-- Installing: /data/git/coreclr/binaries/Product/amd64/debug/./corerun
-- Installing: /data/git/coreclr/binaries/Product/amd64/debug/./libmscordaccore.so
-- Installing: /data/git/coreclr/binaries/Product/amd64/debug/./libcoreclr.so
Repo successfully built.
Product binaries are available at /data/git/coreclr/binaries/Product/amd64/debug
耶!大功告成!
/data/git/coreclr/binaries/Product/amd64/debug# ls
corerun libcoreclr.so libmscordaccore.so
【补充】
GitHub上已经有了专门的参考资料:Building and Running CoreCLR on Linux
Linux上成功编译CoreCLR源代码的更多相关文章
- Windows上成功编译CoreCLR源代码
昨天得知微软在GitHub上发布CoreCLR的源代码之后,立马从GitHub上签出代码,并尝试在Windows Server 2012上进行编译. 参考CoreCLR的开发者指南(Developer ...
- Mac OS X上尝试编译CoreCLR源代码
CoreCLR登陆GitHub之后,体验CoreCLR首当其冲的方式就是在自己的电脑上编译它,昨天分别在Windows与Linux上成功编译了CoreCLR,详见: 1)Windows上成功编译Cor ...
- Linux上安装编译工具链
在Linux上安装编译工具链,安装它会依赖dpkg-dev,g++,libc6-dev,make等,所以安装之后这些依赖的工具也都会被安装.ubuntu软件库中这么描述 Informational l ...
- Linux上VsCode编译打包运行
前提:最好使用root用户可以排除一些不必要的错误. 一. 准备环境 Node.js(>= 8.12.0, < 9.0.0) Python2.7 Yarn(可以通过npm install ...
- 《TCP/IP高效编程:改善网络程序的44个技巧》源码在Linux上的编译
为了先完整编译通过,需要以下几个步骤: 1.进入linux子目录,执行 make.(此步骤为打补丁.) 2.返回上一级目录,打开文件 simplec.c,添加头文件 #include <stdi ...
- linux上的编译安装
计算机运行的程序都是二进制的代码,那么我们所用的编程语言都是自然语言中的字符,那么就需要有一种机制来将这些转化成二进制代码,那么根据转化机制不一样,编程语言(软件 产生的源头)分两大类 解释型 编译型 ...
- java类在eclipse上打jar包,Linux上成功运行的实例
1 eclipse下的java项目结构如下图所示: 2 打包的步骤如下: 3 修改minifest.mf文件: 4 .上传需要的三方jar包们和主类打的jar(案例是topV.jar)并且执行jav ...
- 在Linux上成功启动Jenkins却无法访问的问题
本鸟最近打算学习Jenkins,正准备在Linux上面鼓捣一番,,却没想被入门级别问题当头一棒 下载完jenkins.war,使用java -jar命令在8088端口开启服务:java -jar je ...
- Win10上编译CoreCLR的Windows和Linux版本
一.编译环境 首先,不管是Windows还是Linux版本CoreCLR的编译,都是在Windows10上进行的. 二.CoreCLR for Windows 在Windows上做编译怎么能少得了Vi ...
随机推荐
- Unix网络编程 -- ubuntu下搭建编译环境( 解决unp.h 编译等问题)
1.安装编译器,安装build-essential sudo apt-get install build-essential 2.下载本书的头文件 下载unpv13e http://ishare.i ...
- wget net-tools
新安装的centos7 minimal 没有安装 wget 需要安装一下,才能安装lnmp yum -y install wget yum -y install net-tools
- fastjson基本使用 (待大量完善)
参考: http://blog.csdn.net/wx_962464/article/details/37612861 maven库下载 fastjson基本使用 import java.util.A ...
- TCP/ip协议栈之内核调优
大并发带来服务器各种层出不穷的问题,我们要善用服务器系统内核,因为其性能优于用户态的玩意 注:若想永久保存参数,可将其加入到/etc/sysctl.conf中,执行sysctl -p使其永久生效,临时 ...
- 简单验证码实现(Ajax)
前端页面: <!--验证码输入框 --> <input type="text" class="entry" value="" ...
- iptables配置允许vpnserver(softether vpn)
防火墙配置 -A INPUT -p udp -m multiport --dport ,,,, -j ACCEPT
- mysql的一个特殊问题 you can't specify target table 'cpn_regist' for update in FROM clause
今天在操作数据库的时候遇到了一个问题,sql语句如下: UPDATE cpn_yogurt_registration SET dep1Name = '1' WHERE `key` in (SELEC ...
- SMTP的相关命令
SMTP是Simple Mail Transfer Protocol的简写. 邮件是日常工作.生活中不能缺少的一个工具,下面是邮件收发的流程. Image 邮件的发送,主要是通过SMTP协议来实现的. ...
- Python学习笔记异常
在程序代码中,可能会有各种错误的情况出现,且产生错误的结果是后面的代码都无法执行,即使是一点无关紧要的错误,如图: 在这样的情况下,我们需要异常处理,对程序代码中的错误抛出异常信息,且不影响后面的代码 ...
- shell 脚本注意事项
设脚本名为test.sh 第一行应该为#! /bin/bash 1.运行和调试的结果是不一样的 调试 sh -x test.sh 这时在计算两个数的和sum=$[$a+$b]时得到sum=3+4,而 ...