当前,在Linux系统上架设ASP.NET网站、建设WEB应用工程项目已经在国内流行起来,而“Mono+Jexus”架构模式是Linux承载ASP.NET企业级应用的极为重要的架构方式,这种架构中,Jexus很好安装、配置,基本上就是一个下载、解压、复制的过程,但是,用源码安装Mono就麻烦一些,特别是才从Windows转向Linux平台的技术人员,因为对Linux极为陌生,mono安装常常是他们遇到的主要的拦路虎。
下面,我介绍一下在Linux上用源码安装Mono的方法,希望能对初学者有点帮助。
首先是Linux发行版选用的问题,我建议大家选用Ubuntu服务器版,本技术资料也是基于Ubuntu 14.04 写的。
一、更新系统:
sudo apt-get update
sudo apt-get upgrade
二、构建编译环境:
如果你的系统是新安装的,那么你得构建一个编译环境,以便顺利完成对mono源文件的编译安装。
sudo apt-get install build-essential
sudo apt-get install automake autoconf
sudo apt-get install bison gettext libtool libglib2.0-dev libfreetype6-dev libfontconfig-dev
三、安装libgdiplus、mono以及编译环境所需要的其它库文件
sudo apt-get install libgif-dev libtiff4-dev libpng12-dev libexif-dev libx11-dev libxft-dev libjpeg62-dev(或libgpeg-dev)
四、源文件下载与解压:
1,下载:
wget http://download.mono-project.com/sources/libgdiplus/libgdiplus-2.10.tar.bz2
wget http://download.mono-project.com/sources/mono/mono-3.0.12.tar.bz2
2,解压:
tar jvxf libgdiplus-2.10.tar.bz2
tar jvxf mono-3.0.12.tar.bz2
五、安装Libgdiplus和Mono:
1、安装libgdiplus
  cd libgdiplus-2.10
  ./configure --prefix=/usr
  make
  sudo make install
  cd ..
2、安装Mono
  cd mono-3.0.12
  ./configure --prefix=/usr
  make
  sudo make install
  cd ..
通过以上的步骤,Mono就安装好了,可以通过 mono -V 查看mono版本的方式验证安装是否成功。

异常报错如下:

发现在该操作系统报错了:如下

gdiplus-private.h:33:31: fatal error: freetype/tttables.h: No such file or directory
#include <freetype/tttables.h>
^
compilation terminated.
make[2]: *** [adjustablearrowcap.lo] Error 1
make[2]: Leaving directory `/root/libgdiplus-2.10/src'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/root/libgdiplus-2.10'
make: *** [all] Error 2
root@ubuntu:~/libgdiplus-2.10# sudo ln -s /usr/X11/include/freetype2/freetype/ /usr/X11/include/freetype
ln: failed to create symbolic link ‘/usr/X11/include/freetype’: No such file or directory

这个错误就是说创建/usr/X11/include/freetype链接失败了,因为找不到freetype

我们打开/usr/include看有没有freetype这个目录,没有吧,但是我们找到了freetype2,这样我们做个链接吧

ln -s /usr/include/freetype2 /usr/include/freetype

然后继续make发现错误如下:

/usr/lib64/libglib-2.0.so.0: could not read symbols: Invalid operation
collect2: error: ld returned 1 exit status
make[2]: *** [testgdi] Error 1
make[2]: Leaving directory `/usr/local/src/libgdiplus-2.10.9/tests'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/usr/local/src/libgdiplus-2.10.9'
make: *** [all] Error 2

解决方法来自:http://beginor.github.io/2013/10/15/install-and-config-mono-on-ubuntu-server.html

先执行 ./configure 命令, 然后编辑libgdiplus-2.10.9目录下的 tests/Makefile 文件;
将 130 行的 LIBS = -lpthread -lfontconfig 改为 LIBS = -lpthread -lfontconfig -lglib-2.0 -lX11;
再次执行 make 命令即可。

linuxs上mono的更多相关文章

  1. CentOS上 Mono 3.2.8运行ASP.NET MVC4经验

    周一到周三,折腾了两天半的时间,经历几次周折,在小蝶惊鸿的鼎力帮助下,终于在Mono 3.2.8上运行成功MVC4.在此总结经验如下: 系统平台的版本: CentOS 6.5 Mono 3.2.8 J ...

  2. 让Mono 4在Raspberry Pi上飞

    最近公司有项目想要在树莓派上做,代替原来的工控机(我们是把工控主机当作小的主机用,一台小的工控主机最少也要600左右,而树莓派只要200多).于是,公司买了一个Raspberry Pi B+和一个Ra ...

  3. .Net程序在linux mono环境和WindowsServer上执行测试对比

    最近研究了一下mono,想把windows上写的.Net程序移植到linux上跑.网上有资料说Linux上mono执行.Net程序效率比Windows高,本着实证的态度,只有实际验证过才有说服力. 写 ...

  4. Linux 安装Mono环境 运行ASP.NET(一)

    1.先看一下Linux环境下面请求的过程,(画的不是很好,简单的了解一下原理.) .NET跨平台其实需要这三个关键:编译器.CLR和基础类库.在.NET下我们编写一个最简单的"Hello W ...

  5. MONO 说谈

     Xamarin android现在到底依赖Dalvik不?是部分依赖的 驱动 编译后的IL经过CLR并不能直接成为机器码,而是要借助Dalvik才能成为机器码吗? 而是关于Android的驱动部分主 ...

  6. 利用Nginx+Mono+Fastcgi代替IIS对Asp.Net进行反向代理

    Nginx的好处相信我不必多说了,它作为一个相当轻量级的开源Web 服务器以及反向代理服务器而深受欢迎.越来越多的公司已经对它产生兴趣,包括我们公司的许多部门,利用它进行负载均衡和资源管理,之前写过一 ...

  7. 【Xamarin挖墙脚系列:Mono项目的图标为啥叫Mono】

    因为发起人大Boss :Miguel de lcaza 是西班牙人,喜欢猴子.................就跟Hadoop的创始人的闺女喜欢大象一样...................... 历 ...

  8. 基于Mono和VSCode打造轻量级跨平台IDE

      近期Visual Studio推出Mac版本号的消息迅速在技术圈里刷屏,当project师们最喜欢的笔记本电脑Mac,邂逅地球上最强大的集成开发环境Visual Studio的时候,会碰撞出如何精 ...

  9. Run ASP.NET MVC site on mac (mono/xamarin studio)

    我们选择用xamarin studio来测试,如果你直接进xamarin的官网,那么会有一个更好看的网站和更复杂的流程(比如需要注册),我们直接到mono项目找mac的支持吧,点此进入 相关sdk和a ...

随机推荐

  1. 【异常】lockfile.AlreadyLocked: ~/airflow/airflow-scheduler.pid is already locked

    1 完整异常信息 File "/usr/bin/airflow", line 32, in <module> args.func(args) File "/u ...

  2. from表单中 action的后面"" 内如果是 servlet的虚拟路径的话

    <form action="login" method="post"> ====================================== ...

  3. The Tower HDU - 6559 (解析几何)

    The Tower HDU - 6559 The Tower shows a tall tower perched on the top of a rocky mountain. Lightning ...

  4. MyBatis 分页插件PageHelper 后台报错

    今天遇到一个问题,使用MyBatis 分页插件PageHelper 进行排序分页后,能正常返回正确的结果,但后台却一直在报错 net.sf.jsqlparser.parser.ParseExcepti ...

  5. 2019.9.29 FlutterToast使用

    引入 fluttertoast: ^ 增加头文件 import 'package:fluttertoast/fluttertoast.dart'; 样式 1 Fluttertoast.showToas ...

  6. java程序连接Liunx服务器并且执行命令

    JSch 介绍 JSch 是SSH2的一个纯Java实现.它允许你连接到一个sshd 服务器,使用端口转发,X11转发,文件传输等等.你可以将它的功能集成到你自己的 程序中.同时该项目也提供一个J2M ...

  7. [Algorithm] Area of polygon

    How to calculate the area of polygon. For a triangle like: We can calculate the area: function cross ...

  8. React-native 触摸事件

    http://www.360doc.com/content/16/0711/23/34978982_574835465.shtml

  9. hdu 5532 Almost Sorted Array nlogn 的最长非严格单调子序列

    Almost Sorted Array Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Ot ...

  10. 【CUDA 基础】4.1 内存模型概述

    title: [CUDA 基础]4.1 内存模型概述 categories: - CUDA - Freshman tags: - CUDA内存模型 - CUDA内存层次结构 - 寄存器 - 共享内存 ...