Câu trả lời:
Các trò chơi mà bạn đang nói đến dựa trên .NET Framework và chạy với Mono, đây là một triển khai miễn phí và nguồn mở của .NET Framework của Microsoft.
Bởi vì các ứng dụng này dựa trên .NET, Assemblies có phần mở rộng. Vì vậy, bạn có thể thấy các tập tin DLL trong các thư mục.
Một chương trình .NET được thiết kế để sử dụng đa nền tảng có thể chạy trên Windows, Linux hoặc Mac, với cùng một "nhị phân" (bao gồm cả DLL cũng là tập hợp), được biên dịch trong MSIL và cần thời gian chạy .NET / Mono .
Xin lưu ý rằng bạn cũng có một số ứng dụng miễn phí (không chỉ các trò chơi) dựa trên Mono Framework có sẵn trong kho của Ubuntu. Ví dụ: Tomboy.
.dll
và .so
, là vô nghĩa trong Linux. Chúng chỉ được sử dụng để thuận tiện cho chúng tôi.
gcc
sẽ không tìm thấy một thư viện được cung cấp như ví dụ -lm
nếu tên tệp của nó không kết thúc bằng .so
hoặc .a
biến thể phiên bản của chúng.
Các .dll
tệp GameDataFolder/Managed
thuộc về một chương trình mã gốc sử dụng Mono bên trong.
Các thư viện thực thi đa nền tảng và các thư viện chia sẻ có thể được chạy bởi .NET Common Language Runtime hoặc Mono thường được đặt tên tương ứng .exe
và .dll
hậu tố, ngay cả khi chúng không dành riêng cho Windows. Khi bạn tìm thấy một .dll
tệp trong một chương trình cho một hệ thống GNU / Linux như Ubuntu hoặc cho bất kỳ HĐH nào ngoài Windows, đây thường là lý do. Hầu hết thời gian bạn tìm thấy .dll
trong một hệ thống Ubuntu, câu trả lời của Golboth giải thích nó. Nhưng đó không phải là những gì đang diễn ra ở đây.
Công cụ trò chơi Unity - không nên nhầm lẫn với giao diện đồ họa mặc định trong hầu hết các bản phát hành Ubuntu - là một công cụ trò chơi đa nền tảng độc quyền phổ biến. Công cụ này không chạy trên .NET Framework hoặc Mono. Thay vào đó, nó nhúng Mono , nghĩa là Mono chạy trên đầu nó. Đây là cách các nhà phát triển viết bất kỳ mã nào mà trò chơi của họ cần mà chưa phải là một phần của công cụ Unity.
Nói chung, Mono có thể được sử dụng giống như cách sử dụng .NET CLR của Microsoft, để chạy các chương trình .NET / Mono hoàn chỉnh. Nhưng Mono cũng được thiết kế để có thể dễ dàng nhúng trong các ứng dụng mã gốc , bao gồm để cho phép các ứng dụng đó được tùy chỉnh . Đó là những gì đang diễn ra trong tình huống bạn đang mô tả. Các tệp bạn đang xem không thuộc về chương trình chạy trực tiếp trên Mono hoặc .NET CLR. Thay vào đó, chúng thuộc về một chương trình mã gốc nhúng Mono.
Công cụ trò chơi Unity, được viết chủ yếu bằng C ++, lưu trữ phiên bản Mono của riêng nó, không sử dụng - và có thể khác với - phiên bản (nếu có) được cài đặt thông qua trình quản lý gói hệ thống của bạn. Thời gian chạy Mono nhúng này không thể được sử dụng để chạy các chương trình .NET / Mono độc lập, vì đó không phải là mục đích của nó. Thay vào đó, phần mã gốc của công cụ sử dụng nó để chạy mã CIL. (CIL là Common Intermediate Language , đó là tên chính thức của nó. Trước đây người ta gọi là MSIL hoặc Microsoft Intermediate Language, kể từ khi Microsoft phát triển nó ban đầu.) Các lập trình viên làm cho trò chơi mà sử dụng công cụ Unity thường viết mã riêng của họ trong C #, mặc dù một số ngôn ngữ khác được hỗ trợ.
Công cụ Unity nhúng Mono ngay cả trong Windows. Đối với các trò chơi Universal Windows Platform - và không có nền tảng nào khác - nó sử dụng Microsoft .NET Framework thay vì Mono. Nhưng phần lớn các trò chơi Unity trên hầu hết các nền tảng, bao gồm hầu hết các thiết bị di động và máy chơi game, và bao gồm Ubuntu và Windows, đều sử dụng Mono. Trên một số nền tảng, IL2CPP có sẵn thay thế cho Mono và trên một vài chỉ IL2CPP được hỗ trợ. Xem các hạn chế về Scripting để biết chi tiết.
.dll
tệp trên UbuntuHai tình huống mà bạn có thể thấy một .dll
tệp trên Ubuntu đã được mô tả:
.dll
bạn sẽ thấy trên một hệ thống Ubuntu. Nó chỉ không xảy ra là những gì các .dll
tập tin trong GameDataFolder/Managed
thư mục của bạn là dành cho.Có hai trường hợp hợp lý phổ biến khác mà bạn có thể thấy một .dll
tệp trên Ubuntu:
.dll
các tệp chứ không phải .exe
các tệp, ngay cả khi những gì bạn đang biên dịch không phải là thư viện. Thời gian chạy .NET Core (được gọi là CoreCLR), chứ không phải .NET Framework hoặc Mono thông thường, chạy các tệp này. .NET Core là một sản phẩm của Microsoft, nhưng không giống như .NET Framework tiêu chuẩn, .NET Core là nền tảng chéo với sự hỗ trợ chính thức cho các hệ thống GNU / Linux như Ubuntu và nó là phần mềm nguồn mở miễn phí ..dll
tệp bạn thấy trên Ubuntu sẽ chỉ là một thư viện Windows. Bạn có thể thấy điều này nếu chương trình đang được lưu trữ một hệ thống Ubuntu nhưng chạy trên Windows hoặc nếu bạn gắn ổ đĩa Windows trong Ubuntu. Bạn cũng có thể thấy nó liên quan đến các chương trình có thể chạy trên Ubuntu bằng Wine , bao gồm phần mềm đi kèm với Wine hoặc bạn tự động cài đặt winetricks
để hỗ trợ các phần mềm Windows khác.Đây không phải là một nỗ lực để liệt kê đầy đủ tất cả các trường hợp mà bạn có thể gặp phải .dll
trên Ubuntu. (Ví dụ, nó cũng có thể là thư viện OS / 2. ) Tuy nhiên, tôi tin rằng bốn trường hợp đó là những trường hợp phổ biến nhất.