Come aprire e leggere file eseguibili da un file .so in Linux
Presumo che questo sia un modo mal formulato di chiedere come usare il codice eseguibile contenuto in una libreria di oggetti condivisi (nome file con suffisso .so).
Ci sono due modi, che equivalgono alla stessa cosa ai livelli più bassi. Il linking loader carica il file in memoria all'avvio di un eseguibile che è legato alla libreria specificata in fase di esecuzione. Questo è il modo normale e di gran lunga più comune per accedere al codice contenuto. Naturalmente, questo presuppone che la libreria corrispondente sia specificata al linker e che ci siano chiamate a funzioni/subroutine che sono compilate nel codice oggetto principale dell'eseguibile.
L'altro modo è che il codice usi l'API dlopen() che fa parte della libreria C standard. Questo permette al codice di runtime di aprire una libreria di oggetti condivisi e di legarsi al codice usando i simboli nominati che sono contenuti nella libreria. Ci sono troppi dettagli su questo metodo per descriverli qui, ma si possono trovare tutorial sui metodi abbastanza facilmente. Questo è un modo per implementare "plug-in" che permettono il caricamento dinamico di pezzi di funzionalità che sono usati per estendere o fornire alcune caratteristiche specifiche di un corpo di codice più grande.
Articoli simili
- Perché Android non può eseguire file eseguibili (.exe/.bat/.sh), a differenza di Linux e Windows?
- Come aprire i file che dicono che non c'è un'applicazione per aprire il file
- Cosa impedisce effettivamente a Linux di aprire i file .exe?
- Come aggiustare il mio Windows perché se provo ad aprire qualsiasi app del Microsoft Store non funziona e non posso nemmeno aprire il Microsoft Store