當前位置:首頁 » 操作系統 » erlang源碼

erlang源碼

發布時間: 2022-07-11 00:42:43

1. 如何在linux下安裝Erlang

要看你使用的linux版本。
如果是debian系列的,一般可以直接 sudo apt-get install erlang來進行安裝。
如果是redhat系列,一般需要下載源碼進行安裝,也可yum list | grep erlang 看看軟體源里有沒有

2. 有沒有安裝好的linux erlang

你需要以下准備材料:

1 GNU unzip 用於解壓

2 tar打包解包程序。

3 GNU make

4 Gcc 之類的C編譯器,或者LLVM或clang

5 GNU m4

6 Perl 5

7 相關的庫和頭文件: ncurses termcap termlib, 軟體包名稱通常是ncurses-devel之類,自己慢慢在程序管理器中查找。

8 git(可選)

安裝過程:
解壓源碼包:
$ tar -zxf otp_src_19.1.tar.gz
進入源碼目錄,聲明變數。
$ cd otp_src_19.1
$ export ERL_TOP=`pwd`
配置:
$ ./configure
如果你不在配置時添加變數指定安裝位置,那麼默認會安裝在 /usr/local/{bin,lib/erlang}中,如果你沒有許可權安裝在此位置,必須在配置時指定安裝安裝位置,如安裝到/opt/erlang/19.1/{bin,lib/erlang}, 用此選項--prefix=/opt/erlang/19.1
如果構建過程中出錯,可能是perl聲明了LANG變數,則你可以修改回來:
$ export LANG=C

然後編譯:

make

測試

make release_tests

在源碼目錄release下創建一個test目錄,然後測試:

$ cd release/tests/test_server
$ $ERL_TOP/bin/erl -s ts install -s ts smoke_test batch -s init stop
用瀏覽器查看源碼目錄下/release/tests/test_server/index.html 的測試報告,一切無誤後,進行安裝。

make install

運行

% erl
Erlang/OTP 17 [erts-6.0] [hipe] [smp:8:8]

Eshell V6.0 (abort with ^G)
1>
如果你還要編譯文檔,則聲明如下兩個變數

$ export PATH=$ERL_TOP/bin:$PATH
$ export FOP_HOME=/path/to/fop/dir
其中,$ERL_TOP變數是源碼目錄。

然後

make docs
驗證正確後,

3. 如何退出Erlang系統

【下載erlang源碼安裝包】:在linux安裝erlang只能下載源碼安裝包來安裝,可以到erlang官方網站上下載,如圖。

【解壓安裝包】:下載的安裝包是經過壓縮的gz格式,在linux下解壓用到系統自帶的tar工具,在安裝包所在目錄執行命令:tar -zxvf otp_src_R16B03-1.tar.gz

3
【配置安裝環境】:打開解壓後的目錄-執行命令:cd otp_src_R16B03-1;配置安裝環境-執行命令:

4
【編譯源碼】:執行編譯命令:make

4. 開始接觸erlang,erlang怎麼編譯成一個獨立運行的程序

escript可以直接執行erl源碼
$ cat factorial
#!/usr/bin/env escript
%% -*- erlang -*-
%%! -smp enable -sname factorial -mnesia debug verbose
main([String]) ->
try
N = list_to_integer(String),
F = fac(N),
io:format("factorial ~w = ~w\n", [N,F])
catch
_:_ ->
usage()
end;
main(_) ->
usage().
usage() ->
io:format("usage: factorial integer\n"),
halt(1).
fac(0) -> 1;
fac(N) -> N * fac(N-1).
$ factorial 5
factorial 5 = 120
$ factorial
usage: factorial integer
$ factorial five
usage: factorial integer

5. Web 有哪些 Erlang 語言應用的例子

Mochiweb
一句話介紹: MochiWeb is an Erlang library for building lightweight HTTP servers.
Mochiweb在Erlang項目中被當做一個Web組件被廣泛使用(比如RabbitMQ的plug-in),它的設計相當收斂,除了基礎的Web請求處理沒有提供特別復雜的功能集(後面會提到其它Web Server).目前我已經在兩個項目中使用了Mochiweb,得心應手.
Mochiweb項目代碼有很多值得學習的地方,比如 mochiglobal [ 鏈接 ],Parameterized mole [鏈接]今年夏天我把Mochiweb代碼列印了一份,看得很是過癮.這里有一篇實戰風格的入門文章:A practical introction to MochiWeb - Alex Marandon[鏈接]
使用Rebar很容易編譯運行,裡面自帶一個簡單的Echo demo,你可以使用Rebar快速建立起來自己的站點框架,動手試試吧
項目地址:mochi/mochiweb · GitHub

Cowboy
一句話介紹: Cowboy is a small, fast and molar HTTP server written in Erlang.
使用Cowboy需要通過編寫Handler來定製如何處理Web請求.這是它設計上的一大特色.項目源碼自帶了N種版本的hello_world,也是可以非常快上手.編譯運行依然是rebar搞定,這個項目現在保持更新,每天都能收到github推送的代碼變更郵件.
項目地址:extend/cowboy 路 GitHub

YAWS
一句話介紹:Yaws is a HTTP high perfomance 1.1 webserver particularly well suited for dynamic-content web applications.
這個略顯怪異的名字是Yet another Webserver的縮寫.其提供的已經不是簡單的腳手架了,而是支持動態內容輸出,REST,文件上傳SOAP等等.在其官網上有豐富的文檔和樣例代碼.O'Reilly在2012年6月出版的 Building Web Applications with Erlang 一書中使用的就是YAWS.這本不足150頁的小冊子是很好的YAWS入門教程.估計國內出版社不會引進這樣一本冷冷的書,自己找電子版讀吧,很容易找到.
項目地址:Yaws

Misultin [停止更新]
一句話介紹: Misultin development has been discontinued.
是的,這個項目已經不再繼續更新了;停止更新的原因是作者認為各個Web server項目有"too much plication of efforts".作者在項目介紹中倒是簡單評價了Mochiweb和Cowboy:

Mochiweb has been around the block for a while and it's proven solid in proction, I can only recommend it for all basic webserver needs you might have. Cowboy has a very interesting approach since it allows to use multiple TCP and UDP protocols on top of a common acceptor pool. It is a very modern approach, is very actively maintained and many projects are starting to be built around it.
項目地址:ostinelli/misultin ¡ GitHub
看過Misultin作者的一番評論,其實可以回答不少人關於"用Mochiweb做Web項目很痛苦"的問題:如果你要做一個豐富多彩的Web站點,在Mochiweb提供的腳手架上,你要完成很多工作,顯然你需要其它選擇,呃,或許你需要選擇一個Web Framework了.對於大多數框架來說,其設計的總要目標就是開發效率和常見應用場景的支持.我們看看有哪些Erlang Web Framework可用吧!
Elrang Web Frameworks
除了http://Asp.net MVC,RoR之外,其實還有很多Web Framework可用,看看Erlang世界裡面的解決方案吧:

ChicagoBoss
一句話介紹:Chicago Boss is a server framework inspired by Rails and written in Erlang.
ChicagoBoss是現在非常活躍的Erlang Web Framework,在各種細節上都為新手准備的相當周到比如60秒快速上手教程什麼的.甚至它說自己區別於其它Erlang Web Framework的就是" it is easy to set up and use."它之間Web Server是選擇的Misultin現在已經遷移到Cowboy.前端MVC架構,內置消息隊列BOSSMQ,數據存儲方面選擇性也比較多:Mnesia MongoDB Mysql PostgreSQL Riak ,Tokyo Tyrant;模板方案依然是使用ErlyDTL.
另外,我覺得ChicagoBoss的文案是這些項目裡面寫的最棒的,直接命中你最想知道的兩個問題:
"Chicago Boss is a server framework inspired by Rails and written in Erlang. It offers all the conveniences of modern web development, including Comet. What sets Chicago Boss apart from other non-Erlang frameworks is that it can handle large amounts of traffic without any drop in performance. What sets Chicago Boss apart from other Erlang frameworks is that it is easy to set up and use."
項目地址:ChicagoBoss/ChicagoBoss 路 GitHub
入門PDF: http://www.evanmiller.org/chicago-boss-tutorial.pdf

Nitrogen

一句話介紹:Nitrogen Web Framework is the fastest way to develop interactive web applications in full-stack Erlang.
看群裡面討論,採用Nitrogen的項目也不在少數,這個項目動態模板方案不是採用ErlyDTL,而是自己有一套解決方案Nitrogen records [鏈接].網站上的常式和Step by Step教程足夠詳細,入門應該比較快.
項目地址:Nitrogen - Nitrogen Web Framework for Erlang

Zotontic
一句話介紹:Zotonic is the open source, high speed, real-time web framework and content management system, built with Erlang.
應該說Zotontic和其它框架的差異更多是在業務定位上了,提供了很多CMS直接可用的功能,查看其features列表能夠看到詳細介紹,注意:"Typically 10 times (and much more) faster than PHP content management systems." [鏈接]
Zotontic構建在Mochiweb和PostgreSQL之上.
項目地址:http://zotonic.com/

BeepBeep
一句話介紹: BeepBeep is a simple web application framework for Mochiweb inspired by Rails and Merb
BeepBeep 構建在 MochiWeb 和 ErlyDTL (後面會介紹) 基礎之上. 沿襲了mochiweb的優良傳統一鍵建站,基於ErlyDTL提供Django 模板的視圖展現.
這個項目已經09年之後就沒有實質性的更新,最近一次更新是2010年更新了一下README,慎重選擇吧.
還有一個項目ErlyWeb同樣是

6. 求erlang源碼一份,要求有 四個behaviour的整合運用,利用application啟動停止程序

http://download.csdn.net/detail/nihao5201314520/5287732 這是一份服務端的源碼,希望對你有幫助

7. erlang 怎麼寫 post 請求

用 cowboy 作為網路請求的容器,其中用了對 http 的 POST 請求處理,由於資料較少,找了很久才在外國網站找到了解決的好方法。(其實只是一個方法,自己看源碼看了很久,英文不太好,所以找不到相應的處理方法是那個,一開始盡管拿二進制進行匹配,感覺笨死了)。
下面一個小例子:
hhh.html

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>hhhh</title>
</head>
<body>
<form action="http://localhost:8080/" method="POST"><br>
<input type="test" name="name"/>name<br>
<input type="test" name="passwd"/>passwd<br>
<input type="submit" value="Submit"/><br>
</form>
</body>
</html>

hhh.erl

-mole(hhh).

-behavior(cowboy_http_handler).

-export([init/3, handle/2, terminate/2]).

%%
%%API
%%
init({_Any, http}, Req, [])->
{ok, Req, undefined}.

handle(Req,State)->
%%%
%%% 在POST請求中取出內容
%%% 用戶名NAME
%%% 密碼 PASSWD
{[{_N,Name},{_P,Passwd}],_Req}=cowboy_http_req:body_qs(Req),

io:format(" name is :~ts passwd is : ~ts ~n",[Name,Passwd]),

{ok, _Req} = cowboy_http_req:reply(200, [],<<"ok">>, Req),
{ok, _Req, State}.

terminate(_Req,_State)->
ok.

通過一個cowboy_http_req:body_qs(Req)函數,就可以把body 裡面通過POST傳過來的值了,在通過匹配拿出想要的信息。
因為此函數返回的格式是: {list({binary(), binary() | true}), #http_req{}}

即 {[{"name","頁面填的name"},{"passwd","頁面填的passwd"}],Req1}
拿到信息之後就可以安心開展下來的業務了
隨便附上匹配二進制的代碼:

<<First:1/binary,Second:1/binary,Last:2/binary>>=<<"fuck">>
First=f
Second=u
Last=ck

希望有所幫助 =。=

8. 如何查看erlang模塊的源碼

如何查看erlang模塊的源碼
例如條件語句:
if(a>b) max=a;
else max=b;
可用條件表達式寫為
max=(a>b)?a:b;
執行該語句的語義是:如a>b為真,則把a賦予max,否則把b 賦予max。
使用條件表達式時,還應注意以下幾點:
1) 條件運算符的運算優先順序低於關系運算符和算術運算符,但高於賦值符。
因此
max=(a>b)?a:b
可以去掉括弧而寫為
max=a>b?a:b
2) 條件運算符?和:是一對運算符,不能分開單獨使用。
3) 條件運算符的結合方向是自右至左。
例如:
a>b?a:c>d?c:d
應理解為
a>b?a:(c>d?c:d)
這也就是條件表達式嵌套的情形,即其中的表達式3又是一個條件表達式。

熱點內容
編程正實數 發布:2024-11-20 17:22:12 瀏覽:241
電腦經常彈腳本錯誤 發布:2024-11-20 17:21:03 瀏覽:506
雲伺服器購買人怎麼查 發布:2024-11-20 17:09:36 瀏覽:399
目前安卓手機用什麼軟體 發布:2024-11-20 17:08:56 瀏覽:908
12個符號組成密碼多少個 發布:2024-11-20 17:08:56 瀏覽:296
災難資料庫 發布:2024-11-20 17:08:55 瀏覽:210
釣魚發燒友腳本機價格 發布:2024-11-20 16:59:41 瀏覽:122
什麼是網頁伺服器 發布:2024-11-20 16:59:38 瀏覽:63
訪問黎姿 發布:2024-11-20 16:50:57 瀏覽:877
砸迷你電風扇解壓視頻 發布:2024-11-20 16:44:40 瀏覽:620