Como abrir e ler arquivos executáveis a partir de um arquivo .so no Linux
P>Posto que esta é uma maneira mal redigida de perguntar como usar o código executável contido em uma biblioteca de objetos compartilhados (.so sufixo nome de arquivo).
Existem duas maneiras, que equivalem à mesma coisa nos níveis mais baixos. O carregador de links carrega o arquivo na memória na inicialização de um executável que está vinculado à biblioteca especificada em tempo de execução. Essa é a forma normal, e de longe a mais comum de acessar o código contido. Naturalmente, isto assume que a biblioteca correspondente é especificada para o linker e que existem chamadas para funções/subroutines que são compiladas no código objeto principal do executável.
A outra forma é para o código utilizar a API dlopen() que é parte da biblioteca C padrão. Isto permite que o código em tempo de execução abra uma biblioteca de objetos compartilhada, e faça bind para o código usando símbolos nomeados que estão contidos na biblioteca. Há muitos detalhes sobre esse método para descrever aqui, mas você pode encontrar tutoriais sobre os métodos muito facilmente. Esta é uma maneira de implementar 'plug-ins' que permitem o carregamento dinâmico de pedaços de funcionalidade que são usados para estender ou fornecer algumas características específicas de um corpo maior de código.
Artigos semelhantes
- Por que o Android não pode executar arquivos executáveis (.exe/.bat/.sh), ao contrário do Linux e do Windows?
- Como abrir arquivos que dizem que não há aplicativo para abrir o arquivo
- Que software posso usar para abrir arquivos .exe como arquivos?
- Como mover arquivos do Windows 10 para outro drive (arquivos progam e arquivos de programas x86 especificamente)