2015-12-08 18 views
9

Tôi đã nhận thấy rằng phiên bản 0.4. * Của julia có tùy chọn --compile.Làm cách nào để biên dịch tập lệnh julia?

Kỳ lạ thay, tôi không thể tìm thấy bất kỳ tài liệu nào về nó.

Tôi đã thử (trong Ubuntu), để biên dịch tập lệnh julia thành tệp bytecode LLVM thực thi. Nhưng cho đến đây, tôi đã thất bại:

julia --compile=yes --output-bc test.bc test.jl 
Segmentation fault (core dumped) 

Tôi cũng có thể nhận được thông báo lỗi này:

julia --compile=yes --output-bc test.bc test.jl 
ERROR: could not open file boot.jl 

Lỗi này không xuất hiện nữa, nếu tôi đặt một tập tin boot.jl trong cùng một thư mục.

Tôi nên làm thế nào để biên dịch tập lệnh julia thành mã bytecode có thể thực thi/bị bẻ khóa?

Edit: FYI, file test.jl tôi chỉ chứa print(123)

Trả lời

11

Dưới đây là một ví dụ, từ một nguồn julia xây dựng trên OS X, với /tmp/test.jl như:

function foo() 
    print(123) 
end 

precompile(foo,()) 

julia/base/userimg.jl như include("/tmp/test.jl")

Execute sau bên trong julia/base thư mục:

julia --compile=yes --output-bc test.bc -J ../usr/lib/julia/inference.ji sysimg.jl 

Sau đó chạy llvm-dis test.bc -o test.ll. Một nơi nào đó trong (rất lớn) hình ảnh chúng ta có bytecode có liên quan cho các chức năng kiểm tra:

define internal %jl_value_t* @julia_foo_22542() { 
top: 
    %0 = alloca [4 x %jl_value_t*], align 8, !dbg !51528 
... 

Điều đó nói rằng, tính đến nay (tháng 12 năm 2015), Julia là không sử dụng được cho trước-of-thời gian biên soạn stand- một mình thực thi. Tuy nhiên, sau đây có thể quan tâm:

+1

Cảm ơn bạn. Khi tôi cố gắng thực thi tệp '.bc'. Nó nói rằng hàm 'main' bị thiếu. Ngay cả khi tôi đặt chức năng chính vào tệp nguồn của mình ... – Oli

+0

Xem liên kết đến BuildExecutable. Nhận một cái gì đó để làm việc với điều đó trước tiên, và sau đó sửa đổi nó để sử dụng cờ '--output-bc'. –

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