2012-04-03 18 views
6

Nếu tôi biên dịch một tệp .lua thông thường với luac, kết quả có thể được chạy mà không có thư viện Lua hoặc trình thông dịch được cài đặt không?Bytecode có thể được sản xuất bởi luac được sử dụng trên các máy tính không có thư viện Lua không?

+0

Tôi đã cố gắng cải thiện câu hỏi bằng chỉnh sửa (phải thừa nhận) của tôi để phản ánh những gì tôi tin rằng OP thực sự yêu cầu. Nếu tôi sai, xin vui lòng mạnh dạn sửa tôi! Trong mọi trường hợp, tôi nghĩ câu hỏi này phản ánh sự nhầm lẫn thường xuyên mà người dùng mới của Lua nhìn thấy và đáng để bảo quản. – RBerteig

Trả lời

7

Không. Bạn có thể chạy nó trên phiên bản Lua được xây dựng không có trình biên dịch, nhưng bạn vẫn cần trình thông dịch Lua để thực thi mã.

Ngẫu nhiên, mã bytecode được biên dịch cũng là máy cụ thể; tức là bạn không thể biên dịch trên một kiến ​​trúc và sau đó chạy đầu ra đó trên kiến ​​trúc khác trừ khi bạn hiểu được sự tinh tế (tính cuối cùng, kích cỡ của các loại, v.v.).

+0

Cảm ơn bạn đã giải thích! – user1309306

+0

Vui lòng hủy chỉnh sửa đang chờ xử lý của tôi! Tôi hoàn toàn không chính xác. Hóa ra, tính di động bytecode Lua là vấn đề - thứ mà tôi tìm thấy chỉ với ít nghiên cứu. Lời xin lỗi của tôi. – Deco

1

Nếu mã của bạn không sử dụng bất kỳ cơ sở dựa trên tải động nào (đó là chuỗi tải, loadfile, yêu cầu, v.v.), bạn có thể tách thư viện Lua thành một máy ảo, vì trình biên dịch phát ra là mã sẽ chạy trên máy ảo này máy móc. Điều này có thể dễ dàng cắt Lua đã có dấu chân nhỏ đến 1/3 phần gốc.

Tuy nhiên, vì đây KHÔNG phải là mã nhị phân gốc cho bất kỳ kiến ​​trúc hiện có nào, bạn vẫn KHÔNG thể chạy trực tiếp mà không cần sự trợ giúp của VM.

Các vấn đề liên quan