Dies ist der Befehl perlsolaris, der im kostenlosen OnWorks-Hosting-Provider über eine unserer zahlreichen kostenlosen Online-Workstations wie Ubuntu Online, Fedora Online, Windows-Online-Emulator oder MAC OS-Online-Emulator ausgeführt werden kann
PROGRAMM:
NAME/FUNKTION
perlsolaris - Perl Version 5 auf Solaris-Systemen
BESCHREIBUNG
Dieses Dokument beschreibt verschiedene Funktionen des Solaris-Betriebssystems von Sun, die
beeinflussen, wie Perl Version 5 (im Folgenden nur Perl) kompiliert und/oder ausgeführt wird. Einige Fragen
in Bezug auf das ältere SunOS 4.x werden ebenfalls besprochen, obwohl sie möglicherweise veraltet sind.
In den meisten Fällen sollte einfach alles funktionieren.
Ab Solaris 8 wird perl5.00503 (oder höher) mit dem Betriebssystem ausgeliefert, also
Sie müssen möglicherweise nicht einmal eine neuere Version von Perl erstellen. Die von der Sonne gelieferte Version
wird in /usr/perl5 mit installiert / Usr / bin / perl zeigt auf /usr/perl5/bin/perl. Unterlassen Sie
stören Sie diese Installation, es sei denn, Sie wissen wirklich, was Sie tun. Wenn Sie das entfernen
perl, das mit dem Betriebssystem geliefert wird, machen Sie einige Teile Ihres Systems funktionsunfähig. wenn du
Wenn Sie eine neuere Version von Perl installieren möchten, installieren Sie sie unter einem anderen Präfix als
/usr/perl5. Häufig zu verwendende Präfixe sind Verzeichnis / usr / local und /opt/perl.
Sie können Ihre Perl-Version in den PATH aller Benutzer einfügen, indem Sie den Link ändern
/ Usr / bin / perl. Dies ist wahrscheinlich in Ordnung, da die meisten mit Solaris gelieferten Perl-Skripte ein
expliziter Pfad. (Es gibt einige Ausnahmen, wie z /usr/bin/rpm2cpio und
/etc/rcm/scripts/README, aber diese sind auch so allgemein, dass die aktuelle Version
von Perl ist wahrscheinlich nicht so wichtig.)
Solaris wird mit einer Reihe von Solaris-spezifischen Modulen geliefert. Wenn Sie sich entscheiden, Ihre eigenen zu installieren
Version von Perl finden Sie die Quelle vieler dieser Module auf CPAN
under the Sun::Solaris:: Namensraum.
Solaris kann zwei Versionen von Perl enthalten, zB Solaris 9 enthält sowohl 5.005_03 als auch 5.6.1.
Dies soll Stabilität über Solaris-Releases hinweg gewährleisten, falls eine neuere Perl-Version
weist Inkompatibilitäten mit der in der vorherigen Solaris-Version enthaltenen Version auf. Der
Die Standard-Perl-Version ist immer die neueste und im Allgemeinen die alte Version
nur für eine Solaris-Version aufbewahrt werden. Beachten Sie auch, dass die Standard-Perl NICHT sein wird
konfiguriert, um nach Modulen in der älteren Version zu suchen, wieder wegen
Kompatibilitäts-/Stabilitätsprobleme. Wenn Sie Solaris aktualisieren, haben Sie daher
um alle zusätzlichen CPAN-Module neu zu erstellen/zu installieren, die Sie für das vorherige installiert haben
Solaris-Version. Eine schnelle Möglichkeit hierzu finden Sie in der CPAN-Manpage unter 'autobundle'.
Als vorläufige Maßnahme können Sie entweder die #! Zeile Ihrer Skripte zu speziell
beziehen Sie sich auf die alte Perl-Version, zB unter Solaris 9 verwenden Sie #!/usr/perl5/5.00503/bin/perl zu verwenden
die Perl-Version, die der Standard für Solaris 8 war, oder wenn Sie eine große Anzahl von
Skripten kann es bequemer sein, die alte Version von Perl als Standard auf Ihrem zu machen
System. Sie können dies tun, indem Sie die entsprechenden Symlinks unter /usr/perl5 wie folgt ändern
(Beispiel für Solaris 9):
# cd /usr/perl5
# rm bin man pod
# ln -s ./5.00503/bin
# ln -s ./5.00503/man
# ln -s ./5.00503/lib/pod
#rm / Usr / bin / perl
# ln -s ../perl5/5.00503/bin/perl / Usr / bin / perl
In beiden Fällen sollte dies nur als vorübergehende Maßnahme betrachtet werden - Sie sollten
Aktualisieren Sie so schnell wie möglich auf die neuere Version von Perl.
Beachten Sie auch, dass die Perl-Befehlszeilen-Dienstprogramme (zB perldoc) und alle, die von
Module, die Sie installieren, befinden sich unter /usr/perl5/bin, sodass dieses Verzeichnis hinzugefügt werden sollte
zu deinem WEG.
Solaris Version Zahlen.
Aus Gründen der Konsistenz mit der allgemeinen Verwendung führt das Konfigurationsskript von Perl einige kleinere aus
Manipulationen am Betriebssystemnamen und der Versionsnummer, wie von uname gemeldet.
Hier ist eine teilweise Übersetzungstabelle:
Sonne: perl's Konfigurieren:
uname uname -r Name osname osvers
SunOS 4.1.3 Solaris 1.1 Sunos 4.1.3
SunOS 5.6 Solaris 2.6 Solaris 2.6
SunOS 5.8 Solaris 8 Solaris 2.8
SunOS 5.9 Solaris 9 Solaris 2.9
SunOS 5.10 Solaris 10 Solaris 2.10
Die vollständige Tabelle finden Sie in den FAQ von Sun Managern
<ftp://ftp.cs.toronto.edu/pub/jdd/sunmanagers/faq> unter "9.1) Welche Sun-Modelle laufen auf welchen
Versionen von SunOS?".
HR-RESSOURCEN
Es gibt viele, viele Quellen für Solaris-Informationen. Ein paar der wichtigsten für
Perle:
Solaris-FAQ
Die Solaris-FAQ ist verfügbar unterhttp://www.science.uva.nl/pub/solaris/solaris2.html>.
Die FAQ von Sun Managern finden Sie unter
<ftp://ftp.cs.toronto.edu/pub/jdd/sunmanagers/faq>
Vorkompilierte Binärdateien
Vorkompilierte Binärdateien, Links zu vielen Websites und vieles mehr finden Sie unter
<http://www.sunfreeware.com/> undhttp://www.blastwave.org/>.
Solaris-Dokumentation
Die gesamte Solaris-Dokumentation ist online verfügbar unterhttp://docs.sun.com/>.
RAHMEN UP
Reichen Sie das Extrahierung Probleme on solaris.
Stellen Sie sicher, dass Sie ein unter Solaris (nicht SunOS 4.x) kompiliertes tar-Programm verwenden, um die
perl-5.xxtar.gz-Datei. Verwenden Sie kein für SunOS4 kompiliertes GNU-Tar unter Solaris. (GNU tar
kompiliert für Solaris sollte in Ordnung sein.) Wenn Sie SunOS4-Binärdateien auf Solaris ausführen,
Das Zeitsystem ändert auf magische Weise Pfadnamen, die mit m#lib/locale# übereinstimmen, so dass, wenn tar versucht, dies zu tun
create lib/locale.pm, wird stattdessen eine Datei namens lib/oldlocale.pm erstellt. Wenn du gefunden hast
diesen Rat zu spät und habe trotzdem ein mit SunOS4 kompiliertes tar verwendet, du musst das falsch finden
umbenannte Datei und verschieben Sie sie zurück nach lib/locale.pm.
Compiler und Verbundene Werkzeuge on solaris.
Sie müssen einen ANSI-C-Compiler verwenden, um Perl zu erstellen. Perl kann mit Suns . kompiliert werden
Add-on-C-Compiler oder mit gcc. Der C-Compiler, der mit SunOS4 geliefert wurde, ist nicht geeignet.
Umfassen /usr/ccs/bin/ in deine WEG.
Mehrere Werkzeuge, die zum Erstellen von Perl benötigt werden, befinden sich in /usr/ccs/bin/: ar, as, ld und make.
Stellen Sie sicher, dass /usr/ccs/bin/ in Ihrem PFAD steht.
Auf allen freigegebenen Versionen von Solaris (8, 9 und 10) müssen Sie Folgendes sicherstellen
Pakete installiert sind (diese Informationen sind aus den Solaris-FAQs entnommen):
für Werkzeuge (sccs, lex, yacc, make, nm, truss, ld, as): SUNWbtool, SUNWsprot, SUNWtoo
für Bibliotheken & Header: SUNWhea, SUNWarc, SUNWlibm, SUNWlibms, SUNWdfbh, SUNWcg6h,
SUNWxwinc
Auf Solaris 8 und 9 benötigen Sie zusätzlich:
für 64-Bit-Entwicklung: SUNWarcx, SUNWbtoox, SUNWdplx, SUNWscpux, SUNWsprox, SUNWtoox,
SUNWlmsx, SUNWlmx, SUNWlibCx
Und nur auf Solaris 8 benötigen Sie zusätzlich:
für Bibliotheken & Header: SUNWolinc
Wenn Sie sich nicht sicher sind, welches Paket eine Datei enthält, die Ihnen fehlt, versuchen Sie, eine
Installation, die diese Datei enthält. Dann mach a
$ grep /my/missing/file /var/sadm/install/contents
Dies wird eine Zeile wie diese anzeigen:
/usr/include/sys/errno.hf keine 0644 root bin 7471 37605 956241356 SUNWhea
Das letzte aufgeführte Element (SUNHea in diesem Beispiel) ist das Paket, das Sie benötigen.
Vermeiden /usr/ucb/cc.
Sie müssen nicht /usr/ucb/ in Ihrem PATH haben, um Perl zu erstellen. Wenn Sie wollen /usr/ucb/ in
Ihr PATH sowieso, stellen Sie sicher, dass /usr/ucb/ NICHT in Ihrem PATH vor dem Verzeichnis steht
enthält den richtigen C-Compiler.
Sonne C Compiler
Wenn Sie den C-Compiler von Sun verwenden, stellen Sie sicher, dass das richtige Verzeichnis (normalerweise /opt/SUNWspro/bin/)
ist in Ihrem PFAD (vor /usr/ucb/).
GCC
Wenn Sie gcc verwenden, stellen Sie sicher, dass Ihre Installation aktuell und vollständig ist. Perl-Versionen seit
5.6.0 gut bauen mit gcc > 2.8.1 auf Solaris >= 2.6.
Sie müssen Perl mit konfigurieren
$ sh Konfigurieren -Dcc=gcc
Wenn Sie dies nicht tun, können seltsame Build-Fehler auftreten.
Wenn Sie Ihre Solaris-Version aktualisiert haben, müssen Sie möglicherweise auch Ihren gcc aktualisieren. Für
Beispiel, wenn Sie Solaris 2.6 ausführen und Ihr gcc unter . installiert ist Verzeichnis / usr / local, prüfen
in /usr/local/lib/gcc-lib und stellen Sie sicher, dass Sie das entsprechende Verzeichnis haben,
sparc-sun-solaris2.6/ oder i386-pc-solaris2.6/. Wenn das Verzeichnis von gcc für ein anderes ist
Version von Solaris als Sie ausführen, müssen Sie gcc für Ihre neue Version neu erstellen
Solaris-Version.
Eine vorkompilierte Version von gcc erhalten Sie vonhttp://www.sunfreeware.com/> oder
<http://www.blastwave.org/>. Stellen Sie sicher, dass Sie das Paket für Ihre Solaris-Version abholen.
Wenn Sie gcc verwenden möchten, um Add-On-Module für die Verwendung mit dem mit Solaris gelieferten Perl zu erstellen,
Sie sollten das Solaris::PerlGcc-Modul verwenden, das von CPAN erhältlich ist. Die Perle versendet
mit Solaris wird mit den Sun-Compilern konfiguriert und erstellt, und der Compiler
Konfigurationsinformationen, die in Config.pm gespeichert sind, sind daher nur für die Sonne relevant
Compiler. Das Solaris:PerlGcc-Modul enthält eine korrekte Config.pm-Ersatz
für gcc - Einzelheiten finden Sie im Modul.
GNU as und GNU ld
Die folgenden Informationen gelten für gcc-Version 2. Freiwillige, die es aktualisieren, als
passend für gcc Version 3 wäre wünschenswert.
Die mit Solaris gelieferten Versionen von as und ld funktionieren gut zum Erstellen von Perl. Es gibt
normalerweise müssen die GNU-Versionen nicht installiert werden, um Perl zu kompilieren.
Wenn Sie sich entscheiden, diesen Rat zu ignorieren und trotzdem die GNU-Versionen zu verwenden, dann stellen Sie sicher, dass
sie sind relativ neu. Versionen neuer als 2.7 sind anscheinend neu genug. Älter
Versionen können Probleme beim dynamischen Laden haben.
Wenn Sie GNU ld verwenden möchten, müssen Sie ihm das Flag -Wl,-E übergeben. Der
Die Datei hints/solaris_2.sh versucht dies automatisch, indem sie die folgende Konfiguration setzt
Variablen:
ccdlflags="$ccdlflags -Wl,-E"
lddlflags="$lddlflags -Wl,-E -G"
Im Laufe der Jahre haben es jedoch Änderungen in gcc, GNU ld und Solaris ld erschwert,
automatisch erkennen, welche ld letztendlich aufgerufen wird. Möglicherweise müssen Sie manuell bearbeiten
config.sh und fügen Sie die Flags -Wl,-E selbst hinzu, oder führen Sie Configure interaktiv aus und fügen Sie hinzu
die Flags an den entsprechenden Eingabeaufforderungen.
Wenn Ihr gcc für die Verwendung von GNU als und ld konfiguriert ist, Sie jedoch die Solaris-Versionen verwenden möchten
anstatt perl zu bauen, müssen Sie -B/usr/ccs/bin/ zur gcc-Befehlszeile hinzufügen.
Eine bequeme Möglichkeit, dies zu tun, ist mit
$ sh Configure -Dcc='gcc -B/usr/ccs/bin/'
Beachten Sie, dass der abschließende Schrägstrich erforderlich ist. Dies führt zu einigen harmlosen Warnungen, da
Konfigurieren wird ausgeführt:
gcc: Dateipfadpräfix `/usr/ccs/bin/' wurde nie verwendet
Diese Nachrichten können bedenkenlos ignoriert werden. (Beachten Sie, dass Sie für ein SunOS4-System verwenden müssen
-B/bin/ statt.)
Alternativ können Sie die Umgebungsvariable GCC_EXEC_PREFIX verwenden, um sicherzustellen, dass Sun
as und ld verwendet werden. Weitere Informationen zum -B . finden Sie in Ihrer gcc-Dokumentation
Option und die Variable GCC_EXEC_PREFIX.
Sun und GNU um
Das make unter /usr/ccs/bin funktioniert gut zum Erstellen von Perl. Wenn Sie die Sonne C . haben
Compiler haben Sie auch eine parallele Version von make (dmake). Das funktioniert gut
build perl, kann aber manchmal Probleme beim Ausführen von 'make test' verursachen aufgrund von
unterspezifizierte Abhängigkeiten zwischen den verschiedenen Test-Harness-Dateien. Dasselbe Problem
kann sich auch auf das Erstellen einiger Zusatzmodule auswirken, also geben Sie in diesen Fällen entweder '-m
serial' in der dmake-Befehlszeile oder verwenden Sie stattdessen /usr/ccs/bin/make. Wenn Sie verwenden möchten
GNU make, stellen Sie sicher, dass das set-group-id-Bit nicht gesetzt ist. Wenn ja, dann arrangiere deinen PFAD
damit /usr/ccs/bin/make vor GNU make ist oder den Systemadministrator deaktivieren lassen
das set-group-id-Bit auf GNU make.
Vermeiden libucb.
Solaris bietet einige BSD-Kompatibilitätsfunktionen in /usr/ucblib/libucb.a. Perl wird nicht
richtig erstellen und ausführen, wenn mit -lucb verknüpft, da es Routinen enthält, die
inkompatibel mit der Standard-Solaris-Libc. Normalerweise ist dies kein Problem, da die
Die solaris-Hinweisdatei verhindert, dass Configure in /usr/ucblib nach Bibliotheken sucht, und
lässt auch explizit -lucb weg.
Arbeitsumfeld für den Kompilieren perl on Solaris
PATH
Stellen Sie sicher, dass Ihr PATH den Compiler enthält (/opt/SUNWspro/bin/, wenn Sie die von Sun verwenden
Compiler) sowie /usr/ccs/bin/, um die anderen Entwicklungstools (wie make,
ar, as und ld). Stellen Sie sicher, dass Ihr Pfad entweder /usr/ucb nicht enthält oder dass er enthält
es nach dem Compiler und den Compiler-Tools und anderen Solaris-Standardverzeichnissen. Sie
Ich möchte definitiv nicht /usr/ucb/cc.
LD_LIBRARY_PATH
Wenn Sie die Umgebungsvariable LD_LIBRARY_PATH festgelegt haben, stellen Sie sicher, dass sie NICHT enthält
/ lib oder /usr/lib. Wenn Sie Erweiterungen erstellen, die Drittanbieterfreigaben aufrufen
Bibliotheken (zB Berkeley DB) stellen Sie dann sicher, dass Ihre Umgebungsvariable LD_LIBRARY_PATH
enthält das Verzeichnis mit dieser Bibliothek (zB / Usr / local / lib).
Wenn du eine Fehlermeldung bekommst
dlopen: Stub-Abfangen fehlgeschlagen
es liegt wahrscheinlich daran, dass Ihre Umgebungsvariable LD_LIBRARY_PATH ein Verzeichnis enthält
was ist ein symbollink zu / Usr / lib (Wie z. B. / lib). Der Grund, warum dies ein Problem verursacht, ist ziemlich
subtil. Die Datei libdl.so.1.0 enthält eigentlich *nur* Funktionen, die 'stub' erzeugen
Fehler beim Abfangen fehlgeschlagen! Der Laufzeitlinker fängt Links zu ab
"/usr/lib/libdl.so.1.0" und Links in internen Implementierungen dieser Funktionen stattdessen.
[Danke an Tim Bunce für diese Erklärung.]
RENNE KONFIGURIEREN.
Allgemeine Informationen zu Configure finden Sie in der INSTALL-Datei. Nur Solaris-spezifisch
Fragen werden hier besprochen. Normalerweise sollten die Standardeinstellungen in Ordnung sein.
64-bit perl on solaris.
Allgemeine Informationen zu 64-Bit-Kompilierungen finden Sie in der INSTALL-Datei. Im Allgemeinen ist die
Standardeinstellungen sollten für die meisten Leute in Ordnung sein.
Standardmäßig wird perl-5.6.0 (oder höher) als 32-Bit-Anwendung mit largefile und . kompiliert
lang anhaltende Unterstützung.
Allgemein 32-bit vs 64-bit Probleme.
Solaris 7 und höher werden auf SPARC-CPUs nach einem Neustart entweder im 32-Bit- oder im 64-Bit-Modus ausgeführt.
Sie können 64-Bit-Apps erstellen, während Sie den 32-Bit-Modus ausführen und umgekehrt. 32-Bit-Apps werden ausgeführt
unter Solaris im 32- oder 64-Bit-Modus. 64-Bit-Apps erfordern, dass Solaris
den 64-Bit-Modus ausführen.
Vorhandene 32-Bit-Apps werden eigentlich als LP32 bezeichnet, dh Longs und Pointer sind 32-Bit.
64-Bit-Apps werden besser als LP64 bezeichnet. Das Unterscheidungsmerkmal einer LP64-Bit-App
ist seine Fähigkeit, einen 64-Bit-Adressraum zu verwenden. Es ist durchaus möglich, einen LP32 zu haben
Bit-App, die sowohl 64-Bit-Ganzzahlen (long long) als auch largefiles (> 2 GB) unterstützt, und das ist
die Standardeinstellung für Perl-5.6.0.
Eine ausführlichere Erklärung zu 64-Bit-Problemen finden Sie in den "Solaris 64-Bit Developer's
Führer" beihttp://docs.sun.com/>
Sie können den Betriebssystemmodus mit "isainfo -v" erkennen, z
$ isainfo -v # Ultra 30 im 64-Bit-Modus
64-Bit-sparcv9-Anwendungen
32-Bit-Sparc-Anwendungen
Standardmäßig wird Perl als 32-Bit-Anwendung kompiliert. Es sei denn, Sie möchten zuordnen
mehr als ~ 4 GB Speicher in Perl oder es sei denn, Sie benötigen mehr als 255 offene Dateien
Deskriptoren benötigen Sie Perl wahrscheinlich nicht, um eine 64-Bit-App zu sein.
Groß Reichen Sie das Unterstützung
Ab Solaris 2.6 gibt es zwei verschiedene Möglichkeiten für 32-Bit-Anwendungen, um
große Dateien manipulieren (Dateien mit einer Größe > 2 GByte). (Eine 64-Bit-Anwendung
hat standardmäßig die Unterstützung für Largefiles integriert.)
Die erste ist die "Übergangskompilierungsumgebung", beschrieben in lfcompile64(5).
Laut der Manpage,
Die Übergangskompilierungsumgebung exportiert alle
explizite 64-Bit-Funktionen (xxx64()) und Typen zusätzlich zu
alle regulären Funktionen (xxx()) und Typen. Sowohl xxx() als auch
xxx64()-Funktionen stehen der Programmquelle zur Verfügung. EIN
32-Bit-Anwendung muss die xxx64()-Funktionen der Reihe nach verwenden
um auf große Dateien zuzugreifen. Siehe die lf64(5) Handbuchseite für a
vollständige Auflistung der 64-Bit-Übergangsschnittstellen.
Die Übergangskompilierungsumgebung wird mit dem folgenden Compiler und
Linker-Flags:
getconf LFS64_CFLAGS -D_LARGEFILE64_SOURCE
getconf LFS64_LDFLAG # nichts besonderes erforderlich
getconf LFS64_LIBS # nichts besonderes erforderlich
Zweitens ist die "Kompilierungsumgebung für große Dateien", beschrieben in lfkompilieren(5). Nach
zur Manpage,
Jede Schnittstelle namens xxx(), die auf 64-Bit-Entitäten zugreifen muss
um auf große Dateien zuzugreifen, wird ein xxx64()-Aufruf im
resultierende binäre. Alle relevanten Datentypen sind definiert als
der richtigen Größe (zum Beispiel hat off_t eine typedef-Definition
für eine 64-Bit-Entität).
Eine in dieser Umgebung kompilierte Anwendung ist in der Lage,
die xxx()-Quellschnittstellen für den Zugriff auf große und kleine
Dateien, anstatt die Übergangsfunktion explizit verwenden zu müssen
xxx64()-Schnittstellenaufrufe für den Zugriff auf große Dateien.
Zwei Ausnahmen sind fseek() und ftell(). 32-Bit-Anwendungen sollten verwenden fseeko(3C) und
ftello(3C). Diese werden automatisch zugeordnet zu fseeko64() und ftello64().
Die Kompilierungsumgebung für große Dateien wird mit
getconf LFS_CFLAGS -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64
getconf LFS_LDFLAGS # nichts besonderes erforderlich
getconf LFS_LIBS # nichts besonderes erforderlich
Standardmäßig verwendet Perl die Kompilierungsumgebung für große Dateien und verlässt sich auf Solaris
die zugrunde liegende Abbildung von Schnittstellen.
zum an LP64 perl
Um eine 64-Bit-Anwendung auf einem UltraSparc mit einem aktuellen Sun-Compiler zu kompilieren, müssen Sie
Verwenden Sie das Flag "-xarch=v9". getconf(1) wird dir das sagen, zB
$ getconf -a | grep v9
XBS5_LP64_OFF64_CFLAGS: -xarch=v9
XBS5_LP64_OFF64_LDFLAGS: -xarch=v9
XBS5_LP64_OFF64_LINTFLAGS: -xarch=v9
XBS5_LPBIG_OFFBIG_CFLAGS: -xarch=v9
XBS5_LPBIG_OFFBIG_LDFLAGS: -xarch=v9
XBS5_LPBIG_OFFBIG_LINTFLAGS: -xarch=v9
_XBS5_LP64_OFF64_CFLAGS: -xarch=v9
_XBS5_LP64_OFF64_LDFLAGS: -xarch=v9
_XBS5_LP64_OFF64_LINTFLAGS: -xarch=v9
_XBS5_LPBIG_OFFBIG_CFLAGS: -xarch=v9
_XBS5_LPBIG_OFFBIG_LDFLAGS: -xarch=v9
_XBS5_LPBIG_OFFBIG_LINTFLAGS: -xarch=v9
Dieses Flag wird in Sun WorkShop Compiler 5.0 und höher unterstützt (jetzt vermarktet unter der
Name Forte) bei Verwendung auf Solaris 7 oder höher auf UltraSparc-Systemen.
Wenn Sie gcc verwenden, müssen Sie stattdessen -mcpu=v9 -m64 verwenden. Diese Option ist noch nicht verfügbar
unterstützt ab gcc 2.95.2; from install/SPECIFIC in dieser Version:
GCC-Version 2.95 kann Code für sparc64 nicht korrekt kompilieren
Ziele. Zumindest Benutzer des Linux-Kernels können den sparc32 . verwenden
Programm zum Starten eines neuen Shell-Aufrufs mit einer Umgebung, die
bewirkt, dass configure (über uname -a) das System als sparc erkennt-*-*
stattdessen.
All dies sollte auf Wunsch automatisch von der Hints-Datei gehandhabt werden.
lang Doppel.
Ab 5.8.1 funktionieren lange Doubles, wenn Sie die Sun-Compiler verwenden (benötigt für zusätzliche
mathematische Routinen, die nicht in libm enthalten sind).
Themen in perl on solaris.
Es ist möglich, eine Thread-Version von Perl auf Solaris zu erstellen. Der ganze Perl-Thread
Die Implementierung ist jedoch noch experimentell, also Vorsicht.
Malloc Fragen mit perl on solaris.
Ab Perl 5.7.1 verwendet Perl den Solaris-Malloc, da der Perl-Malloc bricht, wenn
mit mehr als 2 GB Arbeitsspeicher zurechtkommen, und der Solaris malloc scheint auch schneller zu sein.
Wenn Sie aus irgendeinem Grund (z. B. binäre Abwärtskompatibilität) wirklich Perls verwenden müssen
malloc, Sie können Perl aus den Quellen neu erstellen und den Build konfigurieren mit
$ sh Konfigurieren -Dusemymalloc
Sie sollten malloc von Perl nicht verwenden, wenn Sie mit gcc bauen. Es gibt Berichte von Kern
Dumps, insbesondere im PDL-Modul. Das Problem scheint unter -DDEBUGGING zu verschwinden, also
es war schwer aufzuspüren. Der Compiler von Sun scheint mit oder ohne in Ordnung zu sein
perls malloc. [XXX weitere Untersuchungen sind hier erforderlich.]
MACHEN Probleme.
Dynamische Ladeprobleme mit GNU as und GNU ld
Wenn Sie Probleme mit dem dynamischen Laden mit gcc unter SunOS oder Solaris haben und Sie
Verwenden von GNU as und GNU ld, siehe den Abschnitt "GNU as und GNU ld" oben.
ld.so.1: ./perl: fatal: Umzugsfehler:
Wenn Sie diese Meldung unter SunOS oder Solaris erhalten und gcc verwenden, handelt es sich wahrscheinlich um die
GNU as oder GNU ld Problem im vorherigen Punkt "GNU as and GNU ld".
dlopen: Stub-Abfangen fehlgeschlagen
Die Hauptursache für die Meldung „dlopen: stub interception failed“ ist, dass die
Die Umgebungsvariable LD_LIBRARY_PATH enthält ein Verzeichnis, das ein Symlink zu . ist
/ Usr / lib (Wie z. B. / lib). Siehe "LD_LIBRARY_PATH" oben.
#error "Kein DATAMODEL_NATIVE angegeben"
Dies ist ein häufiger Fehler, wenn Sie versuchen, Perl auf Solaris 2.6 mit einem gcc zu erstellen
Installation von Solaris 2.5 oder 2.5.1. Die Solaris-Header-Dateien haben sich geändert, Sie müssen also
um Ihre gcc-Installation zu aktualisieren. Sie können entweder das fixincludes-Skript von gcc erneut ausführen
oder nutzen Sie die Gelegenheit, um Ihre gcc-Installation zu aktualisieren.
sh: ar: nicht gefunden
Dies ist eine Nachricht von Ihrer Shell, die Ihnen mitteilt, dass der Befehl 'ar' nicht gefunden wurde.
Sie müssen Ihre PATH-Umgebungsvariable überprüfen, um sicherzustellen, dass sie die
Verzeichnis mit dem Befehl 'ar'. Dies ist ein häufiges Problem auf Solaris, wobei 'ar' ist
im Verzeichnis /usr/ccs/bin/.
MACHEN TESTEN
op/stat.t Test 4 in Solaris
op/stat.t Test 4 kann fehlschlagen, wenn Sie auf einer Art tmpfs arbeiten. Bauen in / Tmp manchmal
zeigt dieses Verhalten. Die Testsuite erkennt, ob Sie einbauen / Tmp, aber vielleicht nicht
in der Lage sein, alle tmpfs-Situationen abzufangen.
nss_delete Core abladen für op/pwent or op/grant
Siehe "nss_delete Core Dump von op/pwent oder op/grent" in perlhpux.
KREUZKOMPILATION
Nichts Ungewöhnliches hier. Sie können dies problemlos tun, wenn Sie einen Cross-Compiler zur Verfügung haben;
Ein üblicher Configure-Aufruf beim Targeting eines Solaris x86 sieht in etwa so aus:
sh ./Configure -des -Dusecrosscompile \
-Dcc=i386-pc-solaris2.11-gcc \
-Dsysroot=$SYSROOT\
-Alddlflags=" -Wl,-z,notext" \
-Dtargethost=... # Die üblichen Cross-Kompilierungsoptionen
Der Zusatz lddlflags ist das einzige abnormale Bit.
VORGEBAUT BINÄRE OF PERL FÜR SOLARIS.
Sie können vorgefertigte Binärdateien für Solaris abholen vonhttp://www.sunfreeware.com/>,
<http://www.blastwave.org>, ActiveStatehttp://www.activestate.com/>, und
<http://www.perl.com/> unter der Liste Binärdateien oben auf der Seite. Es gibt wahrscheinlich
auch andere Quellen. Bitte beachten Sie, dass diese Seiten unter der Kontrolle ihrer
jeweiligen Eigentümer, nicht die Perl-Entwickler.
LAUFZEIT PROBLEME FÜR PERL ON SOLARIS.
Limits on Zahlen of Öffnen Mappen on solaris.
Die stdio(3C) Die Handbuchseite weist darauf hin, dass für LP32-Anwendungen nur 255 Dateien mit geöffnet werden können
fopen(), und nur die Dateideskriptoren 0 bis 255 können in einem Stream verwendet werden. Seit Perl
Anrufe öffnen() und dann fdoopen(3C) mit dem resultierenden Dateideskriptor ist Perl beschränkt auf
255 gleichzeitig geöffnete Dateien, auch wenn sysopen() wird genutzt. Wenn sich dies als ein erweist
unüberwindbares Problem, Sie können Perl als LP64-Anwendung kompilieren, siehe „Building an LP64
perl" für Details. Beachten Sie auch, dass das standardmäßige Ressourcenlimit für offene Dateideskriptoren auf
Solaris ist 255, daher müssen Sie Ihr ulimit oder rctl ändern (ab Solaris 9)
passend.
SOLARIS-SPEZIFISCHES MODULE.
Siehe die Module unter den Solaris:: und Sun::Solaris Namespaces auf CPAN, siehe
<http://www.cpan.org/modules/by-module/Solaris/> und
<http://www.cpan.org/modules/by-module/Sun/>.
SOLARIS-SPEZIFISCHES PROBLEME MIT MODULE.
Prozess::Prozesstabelle on Solaris
Proc::ProcessTable kompiliert nicht auf Solaris mit perl5.6.0 und höher, wenn Sie haben
LARGEFILES definiert. Da die Unterstützung für Largefiles die Standardeinstellung in 5.6.0 und höher ist, haben Sie
besondere Schritte zu unternehmen, um dieses Modul zu verwenden.
Das Problem ist, dass verschiedene über procfs sichtbare Strukturen off_t verwenden, und wenn Sie kompilieren
mit Largefile-Unterstützung ändern sich diese von 32 Bit auf 64 Bit. Also was bekommt man zurück
procfs stimmt nicht mit den Strukturen in Perl überein, was zu Müll führt. Sehen proc(4)
zur weiteren Diskussion.
Ein Fix für Proc::ProcessTable besteht darin, Makefile zu bearbeiten, um die Largefile-Flags explizit zu entfernen
von denen, die MakeMaker von Config.pm aufnimmt. Dies führt zu Proc::ProcessTable
unter der richtigen Umgebung gebaut werden. Dann sollte alles in Ordnung sein solange
Proc::ProcessTable versucht nicht, off_t's mit dem Rest von Perl zu teilen, oder wenn ja, sie
sollte explizit als off64_t angegeben werden.
BSD::Ressource on Solaris
BSD::Ressourcenversionen vor 1.09 kompilieren nicht auf Solaris mit Perl 5.6.0 und
höher, aus den gleichen Gründen wie bei Proc::ProcessTable. BSD::Ressourcenversionen ab
1.09 haben eine Problemumgehung für das Problem.
Netz::SSLeay on Solaris
Net::SSLeay erfordert, dass /dev/urandom vorhanden ist. Dieses Gerät ist ab Solaris 9 erhältlich
weiter. Für frühere Solaris-Versionen können Sie entweder das Paket SUNWski (packaged
mit mehreren Sun-Softwareprodukten, zum Beispiel dem Sun WebServer, der Teil der
Solaris Server Intranet Extension oder Sun Directory Services, Teil von Solaris for
ISPs) oder laden Sie das ANDIrand-Paket herunter vonhttp://www.cosy.sbg.ac.at/~andi/>. Wenn du benutzt
SUNWski, erstellen Sie einen symbolischen Link /dev/urandom, der auf /dev/random zeigt. Weitere Informationen finden Sie unter
Dokument ID27606 mit dem Titel "Differing /dev/random support requirements within Solaris[TM]
Betriebsumgebungen", verfügbar unterhttp://sunsolve.sun.com>.
Möglicherweise können Sie den Entropy Gathering Daemon (in Perl geschrieben!) verwenden, der bei . erhältlich ist
<http://www.lothar.com/tech/crypto/>.
SunOS 4.x
In SunOS 4.x möchten Sie höchstwahrscheinlich das SunOS ld verwenden, /usr/bin/ld, da je mehr
neuere Versionen von GNU ld (wie 2.13) scheinen zum Erstellen von Perl nicht mehr zu funktionieren. Wann
Beim Verlinken der Erweiterungen wird GNU ld sehr unglücklich und spuckt viele Fehler wie diesen aus
... Umzug passend gekürzt: BASE13 ...
und stirbt. Daher setzt die SunOS 4.1-Hinweisdatei explizit das ld auf /usr/bin/ld.
Ab Perl 5.8.1 scheint auch das dynamische Laden von Bibliotheken (DynaLoader, XSLoader)
sind in SunOS 4.x eingebrochen. Daher wird Perl standardmäßig statisch erstellt.
Das Ausführen der Testsuite in SunOS 4.1 ist etwas schwierig, da die lib/Tie/File/t/09_gen_rs
test hängt (Subtest #51, FWIW) aus unbekanntem Grund. Stoppen Sie einfach den Test und töten Sie das
bestimmten Perl-Prozess.
Es gibt verschiedene andere Fehler, die ab SunOS 4.1.4 und gcc 3.2.2 gcc sehr ähnlich sehen
Fehler. Viele der Fehler treten bei den Encode-Tests auf, wenn beispielsweise der Test
erwartet "0" bekommt man "XNUMX" was nach ein wenig Blinzeln in der Tat sehr merkwürdig aussehen sollte.
Ein weiteres Beispiel ist früher in t/run/fresh_perl woher chr(0xff) wird erwartet, aber der Test
scheitert, weil das Ergebnis ist chr(0xff). Exakt.
Dies ist das "Make-Test"-Ergebnis aus der genannten Kombination:
27 von 745 Testskripten fehlgeschlagen, 96.38 % in Ordnung.
Das Ausführen des "Kabelbaums" ist aufgrund der vielen fehlgeschlagenen Unicode-bezogenen Tests schmerzhaft
Megabyte an Fehlermeldungen ausgeben, aber wenn man geduldig wartet, erhält man folgende Ergebnisse:
Failed Test Stat Wstat Total Fail Failed Liste der fehlgeschlagenen
-------------------------------------------------- ---------------------------
...
../ext/Encode/t/at-cn.t 4 1024 29 4 13.79 % 14-17
../ext/Encode/t/at-tw.t 10 2560 17 10 58.82 % 2 4 6 8 10 12
14 17
../ext/Encode/t/enc_data.t 29 7424 ?? ?? % ??
../ext/Encode/t/enc_eucjp.t 29 7424 ?? ?? % ??
../ext/Encode/t/enc_module.t 29 7424 ?? ?? % ??
../ext/Encode/t/encoding.t 29 7424 ?? ?? % ??
../ext/Encode/t/grow.t 12 3072 24 12 50.00 % 2 4 6 8 10 12 14
16 18 20 22 24
Failed Test Stat Wstat Total Fail Failed Liste der fehlgeschlagenen
-------------------------------------------------- ----------------------------
../ext/Encode/t/guess.t 255 65280 29 40 137.93 % 10-29
../ext/Encode/t/jperl.t 29 7424 15 30 200.00% 1-15
../ext/Encode/t/mime-header.t 2 512 10 2 20.00% 2-3
../ext/Encode/t/perlio.t 22 5632 38 22 57.89% 1-4 9-16 19-20
23-24 27-32
../ext/List/Util/t/shuffle.t 0 139 ?? ?? % ??
../ext/PerlIO/t/encoding.t 14 1 7.14 % 11
../ext/PerlIO/t/fallback.t 9 2 22.22% 3 5
../ext/Sockel/t/Sockelpaar.t 0 2 45 70 155.56% 11-45
../lib/CPAN/t/vcmp.t 30 1 3.33% 25
../lib/Tie/File/t/09_gen_rs.t 0 15 ?? ?? % ??
../lib/Unicode/Collate/t/test.t 199 30 15.08% 7 26-27 71-75
81 88 95 101
103-104 106 108-
109 122 124 161
169 172
../lib/sort.t 0 139 119 26 21.85 % 107-119
op/alarm.t 4 1 25.00% 4
op/utfhash.t 97 1 1.03% 31
run/fresh_perl.t 91 1 1.10% 32
uni/tr_7jis.t ?? ?? % ??
uni/tr_eucjp.t 29 7424 6 12 200.00% 1-6
uni/tr_sjis.t 29 7424 6 12 200.00% 1-6
56 Tests und 467 Untertests übersprungen.
27/811 fehlgeschlagene Testskripte, 96.67% in Ordnung. 1383/75399 Subtests fehlgeschlagen, 98.17 % ok.
Die Alarm() Testfehler wird verursacht durch System() anscheinend blockieren Alarm(). Das ist
wahrscheinlich ein libc-Bug, und da SunOS 4.x vor Jahren ausgedient hat, halten Sie nicht fest
deinen Atem für eine Lösung. Probieren Sie außerdem nichts zu Unicode-y aus, besonders nicht
mit Encode, und Sie sollten mit SunOS 4.x in Ordnung sein.
Verwenden Sie perlsolaris online mit den onworks.net-Diensten