我写的关于如何在linux编译安装mono的文章,全文如下。。。

1.为了与时俱进,我决定从mono的svn上下载最新的代码来编译。
先准备代码,建立目录将代码check出来:
svn co svn://svn.myrealbox.com/source/trunk/mcs
svn co svn://svn.myrealbox.com/source/trunk/mono
svn co svn://svn.myrealbox.com/source/trunk/monodoc
svn co svn://svn.myrealbox.com/source/trunk/gtk-sharp
svn co svn://svn.myrealbox.com/source/trunk/mono-tools

2.编译mono基本系统
进入check出来的mono目录:
./autogen.sh --prefix=/usr --sysconfdir=/etc

如果从svn来编译会有一个问题,因为mcs(mono的cs编译器)
是用cs写,我们要编译cs程序就必须有个mcs的编译器,而mcs
是用cs代码写的,所以必须系统中必须事先存在一个mcs,在
发布版的tar.gz包里已经包含了一个mcs,而svn上的没包含,
有两种方法可以解决,一个是先下一个编译好的mono包安装,
比如如果是ubuntu的话:sudo apt-get install mono,第二
种方法,在check出来的mono目录中运行:
make get-monolite-latest
不过,这种方法经常报如下错误:
Corlib not in sync with this runtime: expected corlib version 43, found 41.
原因是在mono/metadata/appdomain.c文件中:
#define MONO_CORLIB_VERSION 43
mscorlib.dll的版本号为43,而我刚下载的monolite(20051110)
的mscorlib.dll的版本号为41不一致无法编译,所以还是第一
中方法好些。

编译系统
make

在安装mono系统之前将先前安装的mono包删除,然后安装
sudo make install
或者
sudo checkinstall
sudo dpkg -i *.deb

mono基本系统编译时会自动编译mono和mcs目录下的文件。

3.安装monodoc
./autogen.sh --prefix=/usr
make
sudo make install
或者
sudo checkinstall
sudo dpkg -i *.deb
monodoc里面包含的只是制作mono帮助的工具和assembly,而
帮助阅览器在mono-tools中,后面的包都会用到monodoc来制
作帮助,所以要提前编译它。

4.安装gtk-sharp
编译安装方法同上。

5.安装mono-tools
这个包可能比较陈旧了编译时会遇到一些问题。
a.首先找不到gtk-sharp.pc等这样的东西。
解决方法将/usr/lib/pkgconfig中的*-sharp-2.0.pc都拷贝
一份命名*-sharp.pc。
b.编译时报无编译admin.exe的方法。
将mono-tools/docbrowser/Makefile中相关admin的部分屏蔽,
如果用gtkhtml-sharp做帮助浏览器的引擎就不会出现这样的
问题,如果哦用gecko-sharp做引擎好像就会出现。
编译安装方法同上

其他包的注意事项:
libgdiplus,因为它用到cairo,而当前cvs上的cairo有几个
原来公开的函数私有话了,所以编译时会报未定义函数的错
误(比如_cairo_box_round_to_rectangle),解决方法:
在cairo/src/cairoint.h中找到cairo_private定义的地方,
如下

/* slim_internal.h */

#if (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 3)) && defined(__ELF__)

#define cairo_private       __attribute__((__visibility__("hidden")))#else#define cairo_private#endif
然后在后面添加,将private定义为空#define cairo_private

<script type="text/javascript"> if ($ != jQuery) { $ = jQuery.noConflict(); } var isLogined = false; var cb_blogId = 9866; var cb_entryId = 332147; var cb_blogApp = "pigboy"; var cb_blogUserGuid = "6996310b-63cf-dd11-9e4d-001cf0cd104b"; var cb_entryCreatedDate = '2006/2/16 23:45:00'; </script>

关于mono的编译与安装相关推荐

  1. 其他笔记 - Mono for Windows 跨平台 Runtime 在Win10上编译和安装

    目录 在Windows上编译Mono 安装环境 下载Mono源码 预配置编译安装说明 详细的编译说明 启用BTLS作为Windows构建的加密后端 为Windows版本启用LLVM 使用monolit ...

  2. 【Live555】liveMedia下载、配置、编译、安装、基本概念

    [Live555]live555源码详解系列笔记 一.下载.编译.安装 1.下载 官网地址:http://www.live555.com/ 下载地址:http://www.live555.com/li ...

  3. Linux下boost库的编译、安装详解

    1.下载源文件 去官网下载:http://www.boost.org/ 这里下载最新版本 wget https://dl.bintray.com/boostorg/release/1.64.0/sou ...

  4. golang go get命令 一键获取代码、编译并安装

    go get 命令可以借助代码管理工具通过远程拉取或更新代码包及其依赖包,并自动完成编译和安装.整个过程就像安装一个 App 一样简单. 这个命令可以动态获取远程代码包,目前支持的有 BitBucke ...

  5. linux内核单独安装,Linux内核编译与安装

    平台:虚拟机Ubuntu10.04 内核版本:3.0.80 ---------------------------------------------------------------------- ...

  6. CentOS6.9下手动编译并安装Python3.7.0

    CentOS6.9默认安装的python版本为2.6.6,若想安装python3以上版本,只能手工编译安装 下面介绍Python-3.7.0版本的手动编译并安装的步骤 1.下载Python-3.7.0 ...

  7. Apache 2,4版本 编译与安装 RedHat enterprises 6.2

    只针对Apache 2,4版本 ,之前版本不存在这个问题 到http://httpd.apache.org/下载以源码方式安装,我下载的版本是Apache httpd 2.4.3 解压:[root@l ...

  8. linux怎么编译并安装busybox,linux下安装busybox

    1.获取busybox源码并解压,这里使用天嵌提供的"busybox-1.16.0.tar.bz2" #tar xvf busybox-1.16..tar.bz2 -C / 解压的 ...

  9. SNMP功能开发简介 一 net-snmp编译与安装

    部门产品还没有snmp功能,应客户需求,最近开始开发snmp功能.snmp即简单网络管理协议,管理很简单,但实际开发还是有点工作量,协议有三个版本,分为1,2c,3.相关的RFC文档也比较多,从零开始 ...

最新文章

  1. redis底层数据结构之intset
  2. 字节、快手、阿里、腾讯这两年的广告推荐技术进展 | AICon
  3. mysql用户权限管理和增删改查操作
  4. 宇视智能锁门禁服务器,宇视T1P系列智能锁
  5. mysql 字段加comments_Mysql添加注释(comment)(转)
  6. CF496E-Distributing Parts【平衡树,贪心】
  7. 20175223 MySQL
  8. 登录微信用android设备,Android 之微信登录
  9. 【链接】Solr的Filed中indexed与stored属性
  10. IDEA 点击进入方法内部_Idea中,听说会了Debug,你就离大佬不远了!
  11. 第五周项目3-用多文件组织多个类的程序
  12. 白板推导系列Pytorch-线性判别分析(LDA)
  13. AJAX 数据库实例
  14. 基于鱼群算法的函数寻优
  15. 全新的跨平台app软件开发工具——Lae软件开发平台
  16. 每日一书:《性能测试从零开始loadrunner入门与提升》PDF高清版
  17. ROS turtlebot_follower :让机器人跟随我们移动
  18. 通过面积证明:两个函数相乘 / 相除的导数为什么长成这样?
  19. Java树形菜单的构建、遍历以及获取树形菜单的Id集合List
  20. 2-1、特征:特征选择、特征预处理(缩放)、特征抽取、特征构造

热门文章

  1. 信息学奥赛一本通(1105:数组逆序重存放)
  2. 搜索 —— 启发式搜索
  3. XOR and Favorite Number(CF-617E)
  4. 3.12 SE11创建锁对象
  5. “成长”必经之路:越努力越幸运
  6. linux内核那些事之buddy(慢速申请内存__alloc_pages_slowpath)(5)
  7. linux内核那些事之Memory protection keys(硬件原理)
  8. DMA双缓冲传输意义
  9. MVVM和MVC有什么区别
  10. npm run dev (明明有.vue文件),却报错 cannot GET