Após a embalagem com MKBUNDLE2, a máquina de destino está reclamando sobre Libmono.so.Por quê?
Pergunta
Eu pensei que o propósito do mkbundle2 foi permitir que uma máquina sem mono instalado executasse uma aplicação mono. Mas parece que não está embalando Libmono. Não tenho certeza se é suposto ou não, mas a máquina de destino está reclamando que não consegue encontrar libmono.so.0 quando eu executo o pacote. Por que estaria procurando por esse arquivo? E se for necessário, por que seria procurado em qualquer lugar, mas no pacote? E se é suposto estar no pacote, por que Mkbundle2 colocou lá? Eu estou usando a opção "--deps" para incluir todas as dependências. Estou perdendo alguma coisa?
Depois de adicionar a opção --static, obtenho esse resultado na máquina de destino:
Exceção não tratada: System.typeInitializationException: Uma exceção foi lançada pelo Inicializador do Tipo para System.Windows.Forms.xplatui ---> System.dllnotfoundException: libc em (Wrapper Managed-to-Native) System.Windows.Forms.xplatui: Uname (intptr) no System.Windows.Forms.xplatui..cctor () [0x00000] em: 0
Usando exportar mono_log_level= debug mostra mais informações:
. Mono-info: Dllimport tentando carregar: 'libc'. Mono-info: Dllimport carregando localização: 'libc.so'. Mono-info: Erro de Dllimport Carregando biblioteca: '/usr/lib64/libc.so: cabeçalho de elf inválido'. Mono-info: Dllimport carregando biblioteca: './libc.so'. Mono-info: dllimport error carregando biblioteca './libc.so: não é possível abrir o arquivo de objeto compartilhado: Nenhum arquivo ou diretório'. Mono-info: Dllimport carregando: 'libc'. Mono-info: dllimport error carregando biblioteca 'libc: não é possível abrir o arquivo de objeto compartilhado: Nenhum arquivo ou diretório'.
Isso significa que estou tentando correr na máquina com hardware incompatível? Ambas as máquinas são SUSE Linux Enterprise Server 11 (x86_64).
Solução
de aqui temos que:
.- deps: esta opção enforcará todos os assemblies referenciados para o Assemblies listadas na opção Linha de Comando. Isso é útil para distribuir uma imagem autônoma.
Tem certeza de que não está esquecendo de fazer referência a uma montagem na linha de comando?
A partir deste tópico:
comunidade mono> geral> comunidade mono> mkbundle, estática , lgmodule
Parece que o Mkbundle não é responsável por embalar esta montagem. O usuário resolveu o problema instalando pacotes relacionados ao glib.
Dê uma olhada no parâmetro estático aqui :
.- estático: por padrão mkbundle links dinamicamente para mono e glib . Esta opção faz com que ele estaticamente ligue.