Ho un programma (in particolare la mia voce per il SO DevDays Countdown app challenge) che si basa su diverse librerie dinamiche, vale a dire libSDL, libSDL_ttf e altri. Ho queste librerie installate sotto /opt/local/lib
tramite MacPorts, e molte persone non le hanno installate (e alcune potrebbero averle installate, ma non in quella posizione).Come distribuire un Mac OS X con librerie dipendenti?
Come distribuire il mio programma in modo che le persone senza queste librerie installate possano eseguirlo immediatamente? Ovviamente dovrò distribuire i vari file .dylib
, ma farlo non è sufficiente. Il caricatore dinamico cerca ancora le librerie installate nei luoghi in cui le ho installate. C'è un modo per dire al caricatore dinamico di cercare nella directory corrente dell'eseguibile, come quello che fa Windows con le DLL? Le persone non dovrebbero dover modificare alcuna variabile di ambiente (ad esempio DYLD_LIBRARY_PATH
), poiché ancora una volta voglio che funzioni correttamente.
Dopo averci pensato, penso che sto andando con il collegamento statico per la distribuzione. Se distribuirò comunque le librerie dinamiche, ciò vanifica molti degli scopi del loro utilizzo, quindi potrei anche evitare di affrontare il problema con il caricatore dinamico. –
4. usando l'opzione 2. sopra, posiziona i framework all'interno del tuo .app bundle (file .dmg) e cambia i percorsi eseguibili con install_name_tool. Ecco alcuni esempi di come viene utilizzato install_name_tool: http://qt-project.org/doc/qt-4.8/deployment-mac.html. Dietrich, potresti inserire questo nella tua risposta per favore? –
@ MilanBabuškov: Sembra che questo sia già incorporato nella risposta qui sotto. Non vedo la necessità di duplicare le informazioni. –