Linux到现在也不能双击安装软件的原因,Erlang语言

作者: 生命科学  发布:2019-10-08

近期研究RabbitMQ,发现它是基于Erlang实现的,于是对Erlang这么语言发生了兴趣,官网地址  ,去下载一个最新的版本,我下载的是5.9.1版本,Windows版本R15B01 Windows Binary File (90.7 MB) ,   下载后一路解压安装即可,不用单独做什么设置,Erlang语言就可以使用了,然后就可以开始使用它里面的 Eshell程序 进行编程。

第一个WCF程序

摘要:
1:windows仅支持x86 x64两个硬件平台, 而linux的软件通常要支持 x86,arm,x64一起其他很多硬件平台,所以,通过./configure源码按照可以跨平台。君不见对于32位和64位,一般的软件都提供了两个安装版本,至少启动是不一样的!

这是一个命令行程序,可以直接在里面输入表达式进行计算,例如来一个简单的:

  1. 新建立空白解决方案,并在解决方案中新建项目,项目类型为:WCF服务应用程序。建立完成后如下图所示:

2:通过./configure命令加上合理参数,可以不编译不需要的模块,而windows下即使选择不按照某个模块,其主程序的代码也是编译好支持加载多个模块的,只是没有找到模块时不加载罢了。

 

图片 1

3:对于依赖其他程序提供的公共模块,在Windows下是必须在C:Windows/System32 (也可是设置环境变量PATH来实现)
    linux下./configure的参数指定你电脑的依赖的其他模块(比如libiconv)安装路径是多少

Erlang R15B01 (erts-5.9.1) [smp:4:4] [async-threads:0]

  2.删除系统生成的两个文件IService1.cs与Service1.svc。

4:如果不要求跨那么多的硬件平台,那么对于ubuntu、Fedora系统,软件是可以通过双击安装的!

Eshell V5.9.1  (abort with ^G)
1> 100+300.
400
2> 

  3.添加自定义的WCF【服务文件】User.svc,此时vs2010会自动生成WCF接口文件IUser.cs,我们在IUser中定义WCF方法ShowName,在User.svc.cs对该接口的方法进行实现。 

5:我们畅想一下,如果QQ有tar.gz源码版发布,那么我希望的安装命令是:
cd qq2012-beta2/ ./configure --without-ad --without-qqshow --without-popnews --without-qzone --with-ipaddress --with-showip make;make install

 

     代码如下:

正文:
看最近cnbeta的评论,有一位仁兄矢志不渝的重复“世界上最差的系统就是linux,双击不能安装软件”,而对于该评论的观点众多,但是真正正确的确极少。综合来看,广大cber尤其是喜欢评论的cber对Linux理解的还比较少,而且很多都是跟Windows做比较(当然这里我承认高手也大有人在),所以我想在这里有必要说一下为什么Linux到现在也不能做到双击安装软件。

注意在语句的结尾输入“.”以表示完成,回车就开始计算结果了,如上面所示。

using System.ServiceModel;

namespace WCFService
{
    [ServiceContract]
    public interface IUser
    {
        [OperationContract]
        string ShowName(string name);
    }
}


namespace WCFService
{
    public class User : IUser
    {
        public string ShowName(string name)
        {
            string wcfName = string.Format("WCF服务,显示姓名:{0}", name);
            return wcfName;
        }
    }
}

首先要说一下,很多Linux的发行版例如Ubuntu或者CentOS、Fedora等,已经早就可以双击安装自己发行版的安装包了,例如deb、rpm等。
那么为什么现在大部分软件还是需要下载一个tar.gz然后./configure/make/make install繁琐的命令安装呢?

下面,我们用记事本写一个阶乘的Erlang程序:

大家可以看到,在WCF中的接口与普通接口的区别只在于两个上下文,其他的和我们正常学习的接口一样。定义这个上下文要添加System.ServiceModel的引用。

其实,Linux下跟Windows的软件发布有一个最大的不同就是Linux下大部分软件都是开源的,只提供源码下载,不提供编译好的二进制下载。所以,上面的三个命令实际上是编译一个软件,然后拷贝到系统对应目录,准确来说不是安装。

 

[ServiceContract],来说明接口是一个WCF的接口,如果不加的话,将不能被外部调用。

但是为什么非要这三个命令,而不是双击之后自动执行上述三个命令呢?

-module(test).
-export([fac/1]).

[OperationContract],来说明该方法是一个WCF接口的方法,不加的话同上。 

主要还是跨平台和定制化的考虑。我们知道Linux发行版众多,Linux支持的平台也很多,从使用最多的x86到arm,solaris等,所以这个./configure脚本可以支持很多编译参数,从而让软件支持几乎所有的硬件平台。

fac(0) -> 1;
fac(N) -> N * fac(N-1). 

此时我们的第一个WCF服务程序就建立好了,将User.svc“设为起始页”,然后F5运行一下试试,如下图所示,VS2010自动调用了WCF的客户端测试工具以便我们测试程序:

而Windows下,由于几乎所有软件都是编译好的二进制打包发布,所以软件要么是32位版本,要么是64位版本不能通用的。好在Windows目前只支持x86和x64两个硬件平台,假若以后Windows支持其他平台,那么我们日常软件的版本区分就要更多了。而Linux下只要发布一个源码包,你用户是什么硬件平台自己编译好了。

这个程序定义了一个叫做 “test”的模块,里面包含一个名字叫做fac的函数,该函数有1个参数。

图片 2

另外稍微学过软件工程的都知道,软件开发都是模块化的,通过./configure命令加上合理参数,可以不编译不需要的模块,比如最常用的php,自带几十个模块,通常我们需要哪个编译哪个好了。

按照Erlang的约定,文件名必须跟模块名称一致,于是我们将这个文件保存为 “test.erl”,文件保存在D:test1目录下。

  我们双击上图中的 ShowName() 方法,出现如下图:

有人可能说Windows安装软件也能选择性安装,我可以不安装我不需要的模块。

问题来了,怎么运行这个文件呢?使用 cd 方法,改变Erlang当前的工作路径:

图片 3

其实,Windows就算你不安装你选择的模块,那也只是这个模块不安装。而主程序的模块访问是编译好的,他只不过能自动判断这个模块不存在就不加载罢了。

本文由金沙澳门官网发布于生命科学,转载请注明出处:Linux到现在也不能双击安装软件的原因,Erlang语言

关键词:

上一篇:没有了
下一篇:没有了