Ho notato un problema con le app a seconda delle librerie condivise: se manchi qualche dipendenza, l'app non funzionerà al momento del caricamento anche se l'utente non ha intenzione di utilizzare la funzionalità della dipendenza.Librerie condivise opzionali
Mi piacerebbe che le mie app fossero migliori di così. Idealmente, piuttosto che distribuire fino a n diversi pacchetti, dove n = numberOfSupportedArchitectures * numberOfSupportedOS * Π (per ogni libreria condivisa) (il numero di alternative) Mi piacerebbe prendere un "errore durante il caricamento delle librerie condivise" eccezione emessa al momento del caricamento, quando la libreria che mi piacerebbe - ma non ne ho bisogno - è risultata assente, quindi continua l'esecuzione in un modo che evita semplicemente di utilizzare i collegamenti non risolti interessati. Ma ovviamente non c'è eccezione che si possa catturare. Se manca qualcosa, tutto cade prima che main() inizi anche.
Il più vicino possibile ottenere il controllo del processo di caricamento sta risolvendo tutti i collegamenti con dlopen, dlsym e così via. Così stancante. Mi aspetterei che ci sarebbe già una libreria disponibile per farlo per me?
Ho notato che questo non sarebbe un problema su una fonte di distribuzione né su Windows. Stavo per inserire pacchetti binari nei tag, ma a quanto pare non ho il rep per i tag moneta.
"sembra che la soluzione più elegante risieda nel perfezionamento del comportamento dei caricatori/linker del sistema operativo.
Oppure eseguire il programma tramite uno script che imposta la variabile di ambiente 'LD_LIBRARY_PATH'. – rodrigo
Le alternative al caricamento della libreria non sono solo versioni differenti della cosa, avranno interfacce completamente diverse, o saranno del tutto assenti e la funzionalità che fornirebbe non si manifesterebbe nella UX. Sebbene questo possa fornire una via per la gestione delle librerie assenti; Potrei creare librerie inerte con la stessa interfaccia dei bersagli mancanti, dove, se gli obiettivi mancassero, potrebbero soddisfare la necessità del linker di collegarsi a qualcosa. Sembra sciocco però. – mako