2009-10-20 8 views
6

Beim Erstellen eines Perl-Moduls verwendet ExtUtils :: MakeMaker die in Config.pm definierten Flags (siehe perldoc Config) für Werte wie ccflags und ldflags.Wie überschreibe ich die Kompilierungsflags von Perl beim Erstellen von Modulen?

Wie überschreibe ich diese Werte (kurz vor der Bearbeitung der Makefile.PL)?

perl Makefile.PL ldflags=<options> 

scheint nicht zu funktionieren.

Kontext: Ich versuche, Term :: Readline :: Gnu auf OS X 10.6 zu kompilieren. Das Standard OS X Perl ist eine universelle Binärdatei und hat daher ccflags wie -arch i386 -arch ppc usw.
Auf der anderen Seite wurde meine Version von Gnu Readline (6.0) nur aus Quelle für -arch i386 kompiliert. Als solches enthält es nicht die erwarteten Symbole für ein Modul, das versucht, mit -arch ppc zu verknüpfen.

+0

Versuchen Sie, diese Frage in der EUMM-Mailingliste zu stellen: http://www.perlfoundation.org/perl5/index.cgi?extutils_makemaker –

Antwort

2

Im Allgemeinen ist es sinnlos, die Einstellungen in Config.pm zu überschreiben. Der normale Grund, sie zu ändern, besteht darin, den Compiler auf einer Maschine zu ändern, auf der Perl mit einem Nicht-GNU-Compiler kompiliert wurde, Sie aber GCC verwenden möchten. Dies ist so schwierig, dass es viel einfacher ist, Perl mit dem von Ihnen gewählten Compiler neu zu erstellen, alle Hilfsmodule zu installieren und dann das von Ihnen gewählte neue Modul zu erstellen, anstatt zu versuchen, gegen das System anzukämpfen.

Sie können also eines von zwei Dingen tun - bauen Sie Ihre GNU Readline-Bibliothek mit den gleichen Optionen, die Perl verwenden würde, oder bauen Sie Ihr Perl mit den Optionen, die zum Erstellen von GNU Readline verwendet werden. Es ist nicht zu empfehlen, den einen zu biegen, um den anderen zu treffen, wenn man Wert auf die Maschine und die Haare auf dem Kopf legt (bitte nicht so hart an die Maschine - es ist die Software, mit der man frustriert sein sollte, nicht die Hardware; Macs sind nett !).

Von den beiden Optionen ist der Neuaufbau von GNU Readline wahrscheinlich einfacher - es ist kleiner und hat weniger Add-Ons.

0

Informationen in der Hintsfile Support Abschnitt der Dokumentation möglicherweise relevant sein, obwohl ich es nicht versucht habe.