安装mono

本文介绍在Red Linux 9.0下运行C#程序的方法。先从www.go - mono.org下载相关软件包,接着安装mono,最后进行测试。还给出了测试用的C#代码,包含文件读写操作,如创建文件流、写入日志、读取日志等。

在Red Linux 9.0下运行c#程序:

       (1)到www.go-mono.org上,下载软件包
       (http://www.go-mono.org/archive/beta3/redhat-9-i386/)

       cairo-0.1.23-2.ximian.6.1.i386.rpm
       cairo-devel-0.1.23-2.ximian.6.1.i386.rpm
       icu-2.6.2-1.ximian.6.0.i386.rpm
       libicu26-2.6.2-1.ximian.6.0.i386.rpm
       libicu-devel-2.6.2-1.ximian.6.0.i386.rpm
       libpixman-0.1.1-0.ximian.6.0.i386.rpm
       libpixman-devel-0.1.1-0.ximian.6.0.i386.rpm
       mono-core-0.96-1.ximian.6.2.i386.rpm
       mono-core-devel-0.96-1.ximian.6.2.i386.rpm
       mono-peapi-0.96-1.ximian.6.2.i386.rpm
       mono-runtime-devel-0.96-1.ximian.6.2.i386.rpm

       (2)安装mono
       # rpm -Uvh *.rpm

        (3)测试
        # mcs test.cs
        # mono test.exe

        //**********
        //test.cs
        //**********
        using System;
        using System.IO;

        class Directory {
           public static void Main(String[] args) {
              FileStream fs = new FileStream("log.txt", FileMode.OpenOrCreate, F
ileAccess.Write);
              StreamWriter w = new StreamWriter(fs);
              w.BaseStream.Seek(0, SeekOrigin.End);   // Set the file pointer to
 the end.

              Log ("Test1", w);
              Log ("Test2", w);

              w.Close(); // Close the writer and underlying file.

              fs = new FileStream("log.txt", FileMode.OpenOrCreate, FileAccess.R
ead);

              StreamReader r = new StreamReader(fs);
              r.BaseStream.Seek(0, SeekOrigin.Begin);
              DumpLog (r);
           }

           public static void Log (String logMessage, StreamWriter w) {
              w.Write("Log Entry : ");
              w.WriteLine("{0} {1}", DateTime.Now.ToLongTimeString(), DateTime.N
ow.ToLongDateString());
              w.WriteLine(":");
              w.WriteLine(":{0}", logMessage);
              w.WriteLine ("-------------------------------");
              w.Flush();
           }

           public static void DumpLog (StreamReader r) {
              while (r.Peek() > -1) { // While not at the end of the file, write
 to standard output.
                Console.WriteLine(r.ReadLine());
              }

              }

              r.Close();
           }
        }


 

<think> 我们参考之前用户的问题和回答历史,用户最初遇到子模块问题,然后遇到了bison缺失的问题。现在用户直接询问Linux系统安装mono的教程。因此我们需要提供一个完整的安装指南,覆盖从依赖安装到编译和配置的全过程。 根据引用内容,我们总结以下几点: 1. 引用[2]提供了通过添加官方仓库用apt安装的方法(适用于Ubuntu)。 2. 引用[3]和[1]提供了从源码编译安装的方法,其中引用[3]详细列出了编译步骤。 3. 引用[4]提到编译安装时指定安装路径到/usr的重要性,以避免库路径问题。 因此,我们可以提供两种安装方法:二进制包安装(简单)和源码编译安装(灵活,适合特定版本)。同时,我们需要注意依赖问题(如bison、flex等)以及安装后的配置。 步骤规划: 一、二进制包安装(推荐给大多数用户) 二、源码编译安装(适合需要特定版本或自定义配置的用户) 三、验证安装 四、基本使用示例 同时,我们将根据之前的经验,特别强调依赖的安装,避免出现configure错误。 注意:用户可能是不同的Linux发行版,我们以Ubuntu为例,同时兼顾其他发行版(如CentOS)的说明。 详细步骤: 一、二进制包安装(Ubuntu) 1. 添加Mono官方仓库 2. 安装Mono运行时 二、源码编译安装(通用) 1. 安装依赖 2. 下载源码 3. 配置、编译和安装 三、验证安装 四、基本使用 最后,生成相关问题。 注意:在回答中,对于命令行的代码块,使用bash语言标记。对于C#示例,使用csharp标记。 下面开始回答: </think> 以下是在 Linux 系统上安装 Mono 的完整教程,提供两种主流方法(二进制包安装和源码编译安装),适用于 Ubuntu、CentOS 等主流发行版: --- ### 一、二进制包安装(推荐初学者) #### Ubuntu/Debian 系统 ```bash # 1. 导入 GPG 密钥和添加官方源 sudo apt install gnupg ca-certificates sudo gpg --homedir /tmp --no-default-keyring --keyring /usr/share/keyrings/mono-official-archive-keyring.gpg --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF echo "deb [signed-by=/usr/share/keyrings/mono-official-archive-keyring.gpg] https://download.mono-project.com/repo/ubuntu stable-focal main" | sudo tee /etc/apt/sources.list.d/mono-official-stable.list # 2. 更新并安装 sudo apt update sudo apt install mono-complete # 包含所有组件 ``` #### CentOS/RHEL 系统 ```bash # 1. 添加官方源 sudo rpmkeys --import "http://keyserver.ubuntu.com/pks/lookup?op=get&search=0x3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF" sudo su -c 'curl -o /etc/yum.repos.d/mono-official-stable.repo https://download.mono-project.com/repo/centos8-stable.repo' # 2. 安装 sudo yum install mono-complete ``` --- ### 二、源码编译安装(适合定制化需求) #### 1. 安装编译依赖 ```bash # Ubuntu/Debian sudo apt install build-essential cmake pkg-config \ bison flex libtool autoconf automake \ libgif-dev libtiff-dev libglib2.0-dev # CentOS/RHEL sudo yum groupinstall "Development Tools" sudo yum install cmake bison flex libtiff-devel glib2-devel ``` #### 2. 下载并编译 Mono ```bash # 下载最新源码(替换版本号) wget https://download.mono-project.com/sources/mono/mono-6.12.0.182.tar.xz tar xvf mono-*.tar.xz cd mono-* # 配置编译参数(关键步骤) ./configure --prefix=/usr --sysconfdir=/etc # 编译安装(约20-60分钟) make -j$(nproc) # 使用所有CPU核心加速编译 sudo make install # 更新库缓存 sudo ldconfig ``` #### 3. 解决常见编译问题 若遇到 `configure: error: You need to install bison`: ```bash # 确保安装开发工具链 sudo apt install build-essential bison flex # Ubuntu sudo yum groupinstall "Development Tools" bison flex # CentOS ``` 若出现库路径问题: ```bash # 添加路径到系统库配置 echo "/usr/local/lib" | sudo tee /etc/ld.so.conf.d/mono.conf sudo ldconfig ``` --- ### 三、验证安装 ```bash mono --version # 应显示版本号(如:Mono JIT compiler version 6.12.0) csc -help # 检查C#编译器 ``` --- ### 四、基本使用示例 #### 1. 创建测试程序 ```bash echo 'using System; class Hello { static void Main() { Console.WriteLine("Hello Mono on Linux!"); } }' > hello.cs ``` #### 2. 编译运行 ```bash csc hello.cs # 编译生成 hello.exe mono hello.exe # 输出:Hello Mono on Linux! ``` --- ### 关键注意事项 1. **路径问题**:源码编译时务必使用 `--prefix=/usr` 避免库路径错误[^4] 2. **版本选择**:生产环境建议使用官方仓库的 **稳定版**(非最新源码) 3. **依赖管理**: ```bash # 检查缺失依赖 ldd $(which mono) | grep "not found" ``` 4. **卸载方法**: ```bash sudo apt remove mono-* # Ubuntu sudo yum remove mono-* # CentOS ``` > 官方建议:对于大多数用户,**优先使用二进制包安装**(第一节方法),可自动解决依赖并接收安全更新[^2]。源码编译仅适用于需要特定版本或自定义功能的情况[^3]。 --- ### 安装架构图 ```mermaid graph TD A[安装方式] --> B[二进制包安装] A --> C[源码编译安装] B --> D[自动依赖解析] B --> E[自动更新] C --> F[定制化编译选项] C --> G[特定版本支持] D --> H[适合生产环境] G --> I[适合开发调试] ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值