После упаковки с mkbundle2 конечный компьютер жалуется на libmono.so.Зачем? - PullRequest
2 голосов
/ 15 июля 2010

Я думал, что цель mkbundle2 - позволить машине без моно запускать моно приложение. Но это не похоже на упаковку libmono.so. Я не уверен, должен ли он или нет, но конечный компьютер жалуется, что не может найти libmono.so.0, когда я запускаю пакет. Зачем ему искать этот файл? И если это необходимо, зачем его искать где-нибудь, кроме как в комплекте? И если он должен быть в комплекте, почему mkbundle2 не поместил его туда? Я использую опцию «--deps» для включения всех зависимостей. Я что-то упустил?

После добавления опции --static я получаю этот результат на конечном компьютере:

Необработанное исключение: System.TypeInitializationException: исключение было выдано инициализатором типа для System.Windows.Forms.XplatUI ---> System.DllNotFoundException: libc в (управляемый оболочкой) System.Windows.Forms.XplatUI: uname (intptr) в System.Windows.Forms.XplatUI..cctor () [0x00000] в: 0

Использование экспорта MONO_LOG_LEVEL = отладка показывает больше информации:

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).

1 Ответ

1 голос
/ 23 июля 2010

С здесь имеем:

- deps: эта опция объединит все ссылочные сборки для сборки перечислены в параметре командной строки. Это полезно для распространения автономного изображения.

Вы уверены, что не забываете ссылаться на сборку в командной строке?

Из этой темы:

Сообщество Mono ›Общие› Сообщество Mono ›mkbundle, static, lgmodule

Похоже, что mkbundle не несет ответственности за упаковку этой сборки. Пользователь решил проблему, установив недостающие пакеты, связанные с glib.

Посмотрите на статический параметр здесь :

- статический: по умолчанию mkbundle динамически связывается с моно и glib . Этот вариант вместо этого вызывает статическую связь.

...