Após a embalagem com MKBUNDLE2, a máquina de destino está reclamando sobre Libmono.so.Por quê?

StackOverflow https://stackoverflow.com/questions/3250752

  •  15-09-2020
  •  | 
  •  

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

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top