What are dll files in linux

Linux Programs: The Role of DLLs

When dealing with C Windows Runtime libraries, you can choose whether or not to link to the Single-threaded C Run time library, which is no longer supported. Another option is to utilize .dll files, which are commonly used as Windows shared libraries.

What are .dlls doing in Linux programs?

The games you are referring to utilize the .NET Framework and operate through Mono, an open-source version of Microsoft’s framework that is available for free.

As these applications are developed with .NET, their files are saved with a .dll extension, which can be observed in the folders.

A single .NET application developed for cross-platform functionality has the ability to operate on Windows, Linux or Mac operating systems using identical «binaries», which include DLLs that also act as assemblies. These binaries are compiled in MSIL and require a .NET/Mono runtime to run.

It’s worth mentioning that Mono Framework-based free applications, aside from games, can be found in Ubuntu repositories. A good example of this is Tomboy.

A Mono-based native code program is utilizing the .dll files located in GameDataFolder/Managed .

The Unity game engine embeds Mono (even on most Windows platforms).

Executables and shared libraries that are compatible with both .NET Common Language Runtime and Mono are often labeled with different suffixes, such as .exe for the former and .dll for the latter. These suffixes are used even when the files are not solely intended for Windows. If you encounter a .dll file in a program designed for GNU/Linux or any non-Windows operating system, it is typically due to this labeling convention. While this explanation usually suffices for the presence of a .dll file in an Ubuntu system, it doesn’t entirely account for the situation at hand.

The Unity game engine, a well-known game engine that works across multiple platforms, should not be mistaken for the default graphical interface found in most Ubuntu releases. Unlike other engines, it does not require the use of the .NET Framework or Mono to function. Instead, it incorporates Mono within itself, allowing developers to write any necessary code for their games that isn’t already part of the Unity engine.

Typically, Mono functions similarly to Microsoft’s .NET CLR by executing entire .NET/Mono programs. However, Mono is additionally intended for effortless integration into native code applications, allowing for customization of these applications. This is the scenario you are referring to. The files you observe are not associated with a program that operates directly on Mono or the .NET CLR, but are rather connected to a native-code program that incorporates Mono.

How the Unity Game Engine Uses Mono

The Unity game engine is primarily coded in C++ and features its own instance of Mono, which differs from any version installed via your system’s package manager. This Mono runtime is not intended for running standalone .NET/Mono programs, but rather, the native code segment of the engine employs it to execute CIL code. CIL, previously referred to as MSIL or Microsoft Intermediate Language, is the official name for Common Intermediate Language, which was initially developed by Microsoft. While some other languages are supported, game developers utilizing the Unity engine generally write their code in C#.

Читайте также:  Копирование в архив linux

Mono is integrated into the Unity engine, even on Windows. However, for Universal Windows Platform games, it utilizes the Microsoft .NET Framework instead of Mono. On most platforms, such as mobile devices, gaming consoles, Ubuntu, and Windows, Mono is the preferred choice for Unity games. IL2CPP is available as an alternative to Mono on some platforms, and only IL2CPP is supported on a few. Refer to Scripting restrictions for additional information.

Other Situations Where You May See .dll Files On Ubuntu

The occurrences that may lead to the appearance of a .dll file on Ubuntu have been explained in two scenarios.

  1. Golboth’s explanation of a shared library designed for use by a .NET/Mono application is comprehensive. Typically, Ubuntu systems contain such libraries, which may differ from the files located in your designated folder.
  2. In this scenario, a document containing programming instructions is utilized by an embedded Mono runtime to offer «scripting» capabilities to a native code application.

On Ubuntu, it’s possible to encounter a .dll file in two additional frequent scenarios.

  1. The .NET Core compiler creates .dll files instead of .exe files, regardless of whether you are compiling a library or not. These files are executed by the CoreCLR runtime, which is unique to .NET Core and different from the regular .NET Framework or Mono. .NET Core, a Microsoft product, is cross-platform and free open source software, with official support for GNU/Linux systems like Ubuntu.
  2. At times, on Ubuntu, a .dll file could be a Windows library, especially if the program is being stored on an Ubuntu system but run on Windows or if a Windows drive is mounted on Ubuntu. This can also occur in connection with software that is capable of being run on Ubuntu using Wine. Wine comes with software that can be automatically installed with winetricks to support other Windows software.

The four cases mentioned below are the most common ones where you may encounter a .dll on Ubuntu. Please note that this list is not exhaustive as it could also be an OS/2 library.

Generate CUDA program dlls under Linux, I know that mingw creates a dll file under windows which can be used to create an exe file. We can execute this exe file in windows. I am

Источник

Что делают .dll в программах Linux?

Игры, созданные с использованием Unity3D для Linux, содержат .dll файлы в папке с данными GameDataFolder/Managed .

Что странно, потому что я думал, что Linux использует .so файлы вместо .dll файлов.

Читайте также:  Pantum p3300dw драйвер linux

(То же самое относится и к приложениям Android-Unity3D.)

Игры, о которых вы говорите, основаны на .NET Framework и работают с Mono, которая является бесплатной реализацией Microsoft .NET Framework с открытым исходным кодом.

Поскольку эти приложения основаны на .NET, сборки имеют расширение .dll. Таким образом, вы можете увидеть файлы DLL в папках.

Одна программа .NET, предназначенная для кроссплатформенного использования, может запускаться в Windows, Linux или Mac с теми же «двоичными файлами» (включая библиотеки DLL, которые также являются сборками), которые скомпилированы в MSIL и требуют выполнения среды выполнения .NET / Mono. ,

Обратите внимание, что у вас также есть несколько бесплатных приложений (не только игр) на основе Mono Framework, доступных в репозиториях Ubuntu. Например: сорванец.

Также обратите внимание, что эти библиотеки не являются «настоящими» Windows DLL, а фактически скомпилированы .NET байт-код.

Также обратите внимание, что расширения файлов, в том числе .dll и .so , не имеют смысла в Linux. Они используются только для нашего удобства.

@ray Можешь объяснить? Я думал, что они все еще являются стандартом для передачи информации о типе файла, поэтому не бессмысленны?

@FynnMazurkiewicz: Это скорее вопрос слегка отличающихся традиций проектирования, чем одного центрального атрибута, который применяет любая из систем. Фактически, и ядро Windows, и динамический компоновщик Linux с удовольствием загрузят совместно используемую библиотеку (в их соответствующих форматах) независимо от того, оканчивается ли ее имя на .dll или .so или что-то еще. По историческим причинам LoadLibrary в системный вызов Windows , в некоторых случаях будет добавить «.dll» к имени файла , если он не имеет расширение уже, но это не так, как это обычно используется .

@ray не совсем: gcc не найдет предоставленную библиотеку, например, -lm если имя ее файла не заканчивается .so или .a или ее версионные варианты.

Эти .dll файлы GameDataFolder/Managed принадлежат к родной код программы , которая использует Mono внутренне.

Игровой движок Unity встраивает Mono (даже на большинстве платформ Windows).

Кроссплатформенные исполняемые файлы и общие библиотеки, которые могут запускаться в среде .NET Common Language Runtime или Mono, часто именуются .exe и .dll суффиксами соответственно, даже если они не относятся к Windows. Когда вы находите .dll файл в программе для системы GNU / Linux, такой как Ubuntu, или для любой другой ОС, кроме Windows, обычно это происходит именно по этой причине. Ответ Голбота объясняет это в большинстве случаев .dll в системе Ubuntu . Но это не совсем то, что здесь происходит.

Игровой движок Unity — который не следует путать с графическим интерфейсом по умолчанию в большинстве выпусков Ubuntu —is популярный фирменный кросс-платформенный игровой движок. Этот механизм не работает поверх .NET Framework или Mono. Вместо этого он встраивает моно , то есть Mono работает поверх него. Вот как разработчики пишут любой код, в котором нуждается их игра, который еще не является частью движка Unity.

В общем случае Mono можно использовать так же, как обычно используется Microsoft .NET CLR, для запуска полных программ .NET / Mono. Но Mono также разработан так, чтобы его можно было легко встраивать в приложения с собственным кодом , в том числе для настройки этих приложений . Вот что происходит в ситуации, которую вы описываете. Файлы, которые вы видите, не принадлежат программе, которая запускается прямо поверх Mono или .NET CLR. Вместо этого они принадлежат программе с собственным кодом, которая встраивает Mono.

Читайте также:  Alt linux version kernel

Как игровой движок Unity использует Mono

Игровой движок Unity, который написан в основном на C ++, содержит собственный экземпляр Mono, который не использует — и может отличаться от — версии (если есть), установленной через менеджер пакетов вашей системы. Эту встроенную среду выполнения Mono нельзя использовать для запуска автономных программ .NET / Mono, поскольку это не является ее целью. Вместо этого часть собственного кода движка использует его для запуска кода CIL. (CIL — это Common Intermediate Language , который является его официальным названием. Ранее он назывался MSIL или Microsoft Intermediate Language, так как Microsoft разработала его изначально.) Программисты, делающие игры, использующие движок Unity, обычно пишут свой собственный код на C #, хотя некоторые другие языки поддерживаются.

Движок Unity встраивает Mono даже в Windows. Для игр на универсальной платформе Windows — и никаких других платформ — вместо моно используется Microsoft .NET Framework. Но большинство игр Unity на большинстве платформ, включая большинство мобильных устройств и игровых консолей, а также Ubuntu и Windows, используют Mono. На некоторых платформах IL2CPP доступен в качестве альтернативы Mono, а на некоторых поддерживается только IL2CPP. См. Сценарии ограничения для деталей.

Другие ситуации, когда вы можете увидеть .dll файлы на Ubuntu

Были описаны две ситуации, когда вы можете увидеть .dll файл в Ubuntu:

  1. Общая библиотека, предназначенная для использования приложением .NET / Mono. В ответе Голбота это подробно описано. Это то, что .dll вы увидите в системе Ubuntu. Это просто не то, для чего предназначены .dll файлы в вашей GameDataFolder/Managed папке.
  2. Файл, предоставляющий код, который используется встроенной средой Mono для предоставления «сценариев» для приложения с собственным кодом. Вот что происходит в этом случае.

Есть два других достаточно распространенных случая, когда вы можете увидеть .dll файл в Ubuntu:

  1. Компилятор для .NET Core создает .dll файлы, а не .exe файлы, даже если то, что вы компилируете, не является библиотекой. Эти файлы запускаются средой выполнения .NET Core (называемой CoreCLR), а не обычной .NET Framework или Mono. .NET Core — это продукт Microsoft, но в отличие от стандартного .NET Framework, .NET Core является кросс-платформенным с официальной поддержкой систем GNU / Linux, таких как Ubuntu, и является бесплатным программным обеспечением с открытым исходным кодом .
  2. Иногда .dll файл, который вы видите в Ubuntu, будет просто библиотекой Windows. Вы можете увидеть это, если программа хранится в системе Ubuntu, но работает в Windows, или если вы монтируете диск Windows в Ubuntu. Это также может быть связано с программами, которые можно запускать в Ubuntu с помощью Wine , в том числе с программным обеспечением, которое поставляется вместе с Wine, или которое вы устанавливаете автоматически winetricks для поддержки другого программного обеспечения Windows.

Это не попытка исчерпывающего перечисления всех обстоятельств, когда вы можете столкнуться с .dll Ubuntu. (Например, это также может быть библиотека OS / 2. ) Однако я считаю, что эти четыре случая являются наиболее распространенными.

Источник

Оцените статью
Adblock
detector