Come faccio a ignorare flag di compilazione del Perl per la costruzione di moduli?
-
22-09-2019 - |
Domanda
Quando si costruisce un Perl ExtUtils modulo :: MakeMaker utilizza i flag definiti nel Config.pm (vedi perldoc Config) per valori quali ccflags e LDFLAGS.
Come faccio a ignorare tesi valori (a corto di modificare il Makefile.PL)?
perl Makefile.PL ldflags=<options>
non sembra funzionare.
Contesto:
Sto cercando di compilare Term :: :: Readline Gnu su OS X 10.6.
Il sistema operativo predefinito X Perl è un binario universale e quindi ha ccflags come i386 -arch -arch ppc ecc
D'altra parte la mia versione di Gnu Readline (6.0) è stato compilato da fonte solo i386 -arch. Come tale esso non contiene i simboli che ci si attende per un modulo cercando di collegare ad esso utilizzando ppc -arch.
Soluzione
In generale, cercando di ignorare le impostazioni in Config.pm è un esercizio di futilità. La ragione più normale per voler cambiare loro è quello di cambiare il compilatore su una macchina in cui Perl è stato compilato con un compilatore non-GNU, ma si desidera utilizzare GCC. Questo è così difficile da fare che è di gran lunga più semplice per ricostruire Perl con il compilatore prescelto, installare tutti i moduli ausiliari, e quindi utilizzare a costruire il nuovo modulo scelto, piuttosto che cercare di combattere 'il sistema'.
Si può quindi fare una delle due cose - costruire la vostra libreria GNU Readline con le stesse opzioni che Perl avrebbe utilizzato, o costruire il Perl con le opzioni utilizzate per costruire GNU Readline. Cercando di piegare una per incontrare l'altro non è raccomandato, se ci tenete alla vostra macchina e il capelli sulla testa (si prega di non colpire la macchina così difficile - è il software si dovrebbe essere frustrato con, non l'hardware, Mac sono bello !).
Tra le due opzioni, la ricostruzione GNU Readline è probabilmente la più facile -. È più piccolo e ha meno componenti aggiuntivi
Altri suggerimenti
Le informazioni fornite nella sezione Hintsfile Supporto dei documenti potrebbe essere rilevante, anche se non ho provato.