2009-11-25 72 views
23

có cách nào để biên dịch Erlang thành một thực thi độc lập không? điều này có nghĩa là, để chạy nó như một exe mà không có thời gian chạy Erlang.Biên dịch Erlang - Erlang là độc lập thực thi

+0

trang web được liên kết với hỗ trợ không hỗ trợ trừ – Zubair

+0

@qwerty. Bạn có tìm thấy câu trả lời hoạt động cuối cùng không? – Zubair

Trả lời

14

Mặc dù có thể bao bọc mọi thứ trong một EXE, bạn sẽ không thoát khỏi thời gian chạy Erlang. Các ngôn ngữ động như Erlang thực sự không thể được biên dịch thành mã x86 riêng, chẳng hạn, do bản chất của chúng. Phải có một thông dịch viên ở đâu đó.

Có thể tạo ra một lược đồ kết hợp trình thông dịch và tất cả các tệp BEAM thành một EXE duy nhất, bạn có thể bấm đúp và chạy trực tiếp, nhưng đó có thể là công việc nhiều hơn bạn muốn. Tôi đã nhìn thấy nó được thực hiện trước đây, nhưng hiếm khi có một lý do tốt để làm điều đó, vì vậy tôi sẽ không bận tâm đi vào chi tiết về các kỹ thuật ở đây. Thay vào đó, tôi đề nghị bạn sử dụng cùng một kỹ thuật mà họ sử dụng cho các chương trình py2exe và py2app của Python để tạo các tệp thi hành Windows và Mac OS X, tương ứng. Các chương trình này nạp module chính của chương trình vào một trình thông dịch Python, tìm ra các mô-đun khác cần sử dụng các cơ chế phản xạ tích hợp của ngôn ngữ, sau đó ghi ra tất cả các mô đun được biên dịch cùng với bản sao của trình thông dịch ngôn ngữ và chương trình bao bọc nhỏ khởi chạy mô-đun chính của chương trình với trình thông dịch. Thư mục chứa các tệp đó sau đó là môi trường độc lập, có mọi thứ cần thiết để chạy chương trình. Sự khác biệt duy nhất trong trường hợp Erlang là python.exe trở thành erl.exe, và * .pyc trở thành * .beam. Ý tưởng cơ bản vẫn như cũ.

Bạn có thể đơn giản hóa điều này nếu bạn không cần nó để làm việc với bất kỳ chương trình Erlang tùy ý nào, nhưng chỉ của bạn. Trong trường hợp đó, bạn chỉ cần sao chép trình thông dịch Erlang và tất cả các tệp .beam tạo nên chương trình của bạn thành một thư mục duy nhất. Ví dụ, bạn có thể tạo phần này trong Makefile của chương trình. Sau đó, bạn có thể sử dụng phương thức setup.exe hoặc MSI yêu thích để tạo gói phân phối để cài đặt bộ sưu tập này thành c:\Program Files\MyProgram trên hệ thống của người dùng cuối và tạo lối tắt cho "erl mainmodule.beam" trong menu Bắt đầu của họ . Người dùng cuối không quan tâm đó là một phần của chương trình, họ cũng nhận được một bản sao của Erlang. Đó là một chi tiết thực hiện.

+9

Tôi đã thực hiện một cách nhanh chóng hack vào này, và có vẻ như bạn có thể có được thời gian chạy Erlang xuống dưới 2 MB. Tất cả những gì bạn cần là một tập hợp con của các tập tin trong thư mục erts-VERSION/bin bên dưới thư mục mà bạn đã cài đặt Erlang. Tôi có một thứ có vẻ chỉ hoạt động bằng cách sử dụng beam.smp.dll, epmd.exe, erl.exe, erl. ini, erlexec.dll, erlsrv.exe và heart.exe. Một số trong số đó dường như là tùy chọn. Tôi không chắc chắn làm thế nào kosher nó là để tàu chỉ beam.smp.dll và không beam.dll, hoặc ngược lại; bạn có thể thực sự cần cả hai. Điều đó sẽ giúp bạn không nén đến 3 MB. Tiny, những ngày này. –

+1

Riak không đóng gói như một ứng dụng? – CMCDragonkai