Класс Mono как разделяемая библиотека?

#linux #mono

#linux #mono

Вопрос:

Класс .Net может быть скомпилирован в разделяемую библиотеку (.dll). Может ли класс mono быть скомпилирован в разделяемую библиотеку в Linux (.so)? как?

Ответ №1:

.dll Файлы .Net не являются реальными, то есть родными разделяемыми библиотеками. По умолчанию Mono также создает и использует .dll файлы, используя тот же формат сборки, что и Microsoft .Net. Обе среды выполнения генерируют машинный код из этого промежуточного формата во время выполнения.

Однако можно выполнить компиляцию с опережением времени (AOT) и сохранить полученный .so файл на диск (Microsoft.Чистым эквивалентом этого является ngen.exe генерация собственного образа и кэширование). Когда вы вызываете Mono с --aot флагом, он сохраняет машинный код в виде .so библиотеки и использует его всякий раз, когда тот же файл загружается снова. Вероятно, вы также захотите добавить -O=all флаг, чтобы включить все оптимизации (некоторые из них по умолчанию отключены, поскольку их выполнение требует больших затрат).

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