#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
флаг, чтобы включить все оптимизации (некоторые из них по умолчанию отключены, поскольку их выполнение требует больших затрат).
Однако, пожалуйста, имейте в виду, что кэшированная встроенная библиотека, вероятно, не будет использоваться для создания ссылок на собственные программы.