Tất cả các cổng Linux (nghĩa là hạt nhân Linux trên các bộ vi xử lý khác nhau) sử dụng ELF làm định dạng tệp cho tệp thi hành và thư viện. Một nhị phân ELF cụ thể được gắn nhãn với một kiến trúc/hệ điều hành duy nhất mà nó có thể chạy (mặc dù một số hệ điều hành có khả năng tương thích để chạy các tệp nhị phân ELF từ các hệ điều hành khác).
Hầu hết các cổng đều hỗ trợ định dạng cũ hơn a.out. (Một số bộ vi xử lý đủ mới mà chưa bao giờ tồn tại bất kỳ tệp thực thi a.out nào cho chúng.)
Một số cổng hỗ trợ các định dạng tệp thực thi khác; ví dụ, cổng PA-RISC hỗ trợ các tập tin thực thi SOM cũ của HP-UX và các cổng μ cLinux (nonmmu) hỗ trợ định dạng FLAT của riêng chúng.
Linux cũng có binfmt_misc
, cho phép người dùng đăng ký các trình xử lý cho các định dạng nhị phân tùy ý. Một số bản phân phối tận dụng điều này để có thể thực thi các ứng dụng Windows, .NET hoặc Java - nó thực sự vẫn đang khởi chạy một trình thông dịch, nhưng nó hoàn toàn minh bạch đối với người dùng.
Linux on Alpha hỗ trợ tải các tệp nhị phân của Intel, được chạy qua trình mô phỏng em86
.
Có thể đăng ký binfmt_misc
để thực thi các kiến trúc khác, để chạy với qemu-user.
Về lý thuyết, người ta có thể tạo ra một định dạng mới - có lẽ đăng ký một "kiến trúc" mới trong ELF - cho các tệp nhị phân chất béo. Sau đó, trình tải hạt nhân binfmt
sẽ phải được dạy về định dạng mới này và bạn sẽ không muốn bỏ lỡ liên kết động ld-linux.so
và toàn bộ chuỗi công cụ xây dựng. Có rất ít sự quan tâm đến một tính năng như vậy, và theo như tôi biết, không ai làm việc trên bất cứ điều gì giống như nó.
"Điều gì đó về tệp nhị phân của Linux" - cách chi tiêu thêm một vài giây để cải thiện tóm tắt câu hỏi này? – scobi
Bạn luôn có thể chỉnh sửa tiêu đề/câu hỏi của người khác - mặc dù vui lòng thực hiện cẩn thận! –
bạn có nghĩa là phổ quát trên các bản phân phối Linux hoặc trên các kiến trúc khác nhau ...? – LB40