Su Mac OS X, gli eseguibili binari nel formato DYLD contengono "comandi del caricatore" che istruiscono il sistema di caricamento della libreria su come gestire il contenuto del file. In particolare, il comando loader istruisce il sistema in cui cercare le librerie dipendenti, ecc.Come posso installare un comando DYLD loader che non sia esplicitamente supportato da ld?
È possibile visualizzare l'elenco completo dei comandi del caricatore per qualsiasi file binario sul sistema eseguendo "otool -l/percorso/a/la propria/app".
In generale questi comandi del caricatore sono impostati dallo strumento "ld" durante la fase di collegamento della compilazione di un progetto.
La mia domanda è, cosa devo fare per aggiungere comandi di caricamento per tipi pubblicizzati che non sono supportati (apparentemente) da ld?
In particolare, vorrei sfruttare il comando del caricatore LC_DYLD_ENVIRONMENT, che può essere utilizzato per specificare una stringa nella tabella dei comandi del caricatore di un binario che deve essere caricata e valutata come impostazioni delle variabili d'ambiente nel contesto del eseguibile.
Non vedo alcun argomento in grado di facilitare questo. Qualcosa come "-sectcreate", ma per aggiungere specificamente al contenuto dei comandi del caricatore, è quello che sto cercando.
So che questo è possibile perché almeno un'applicazione standard su Mac OS X lo utilizza: Safari. Ma non so se ottengono questo risultato con una sorta di massaggio post-link del binario, se stanno usando una versione personalizzata di ld che sa come creare e concatenare il comando del caricatore personalizzato, o se stanno sfruttando una funzione di general-purpopse del comando ld che non sono stato in grado di capire.
Ottimo! Grazie. Ho anche ricevuto un feedback tramite Twitter che si è premurato di sottolineare che LC_DYLD_ENVIRONMENT non consente effettivamente di definire variabili di ambiente arbitrarie, solo quelle che influiscono sul caricamento DYLD. Quindi, in tal senso, la raccomandazione LSEnvironment di Ned di seguito è più adatta alle mie esigenze immediate, ma la tua risposta è il riferimento più appropriato per la sostanza della domanda. – danielpunkass