Я думал, что целью mkbundle2 было позволить машине без установленного моно запускать моно приложение. Но, похоже, это не упаковка libmono.so. Я не уверен, предполагается ли это или нет, но машина назначения жалуется, что не может найти libmono.so.0, когда я запускаю пакет. Зачем ему искать этот файл? А если он нужен, то зачем его искать где угодно, только не в комплекте? И если он должен быть в комплекте, то почему mkbundle2 его туда не положил? Я использую опцию "--deps" для включения всех зависимостей. Я что-то упускаю?
После добавления параметра --static я получаю следующий результат на целевом компьютере:
Необработанное исключение: System.TypeInitializationException: Исключение было вызвано инициализатором типа для System.Windows.Forms.XplatUI ---> System.DllNotFoundException: libc at (оболочка, управляемая для собственного) System.Windows.Forms.XplatUI:uname (intptr) в System.Windows.Forms.XplatUI..cctor () [0x00000] в: 0
Использование export MONO_LOG_LEVEL=debug показывает дополнительную информацию:
Mono-INFO: DllImport пытается загрузить: «libc». Mono-INFO: место загрузки DllImport: «libc.so». Mono-INFO: ошибка загрузки библиотеки DllImport: «/usr/lib64/libc.so: недопустимый заголовок ELF». Mono-INFO: библиотека загрузки DllImport: './libc.so'. Mono-INFO: ошибка DllImport при загрузке библиотеки «./libc.so: невозможно открыть общий объектный файл: нет такого файла или каталога». Mono-INFO: загрузка DllImport: 'libc'. Mono-INFO: ошибка DllImport при загрузке библиотеки «libc: невозможно открыть общий объектный файл: нет такого файла или каталога».
Означает ли это, что я пытаюсь работать на машине с несовместимым оборудованием? Обе машины — SUSE Linux Enterprise Server 11 (x86_64).