Anbringen Der Geteilten Bibliotheken
Das ldconfig Programm erledigt die ganze harte
Arbeit des Anbringens einer geteilten Bibliothek. Sie gerechte
Notwendigkeit, die Akten in Platz und in laufen gelassenes ldconfig
einzusetzen. Folgen Sie diesen Schritten:
| 1. |
Copy die geteilte Bibliothek zum Verzeichnis, in dem Sie
es halten möchten.
|
| 2. |
Wenn Sie das Verknüpfungsprogramm in der LageSEIN
wünschen, die Bibliothek, ohne ihm a zu geben zu finden - Ldirectory
Markierungsfahne, die Bibliothek in /usr/lib anzubringen, oder eine
Symverbindung in /usr/lib genanntem libname.so diese Punkte zur Akte
der geteilten Bibliothek zu bilden. Sie sollten ein relatives
symlink (wenn /usr/lib/libc.so auf../../lib/libc.so.5.3.12) zeigt,
anstelle von einem absoluten symlink benutzen, würden
(/usr/lib/libc.so nicht auf /lib/libc.so.5.3.12 zeigen).
|
| 3. |
Wenn Sie das Verknüpfungsprogramm in der LageSEIN
wünschen, die Bibliothek zu finden, ohne sie auf das System
anzubringen (oder, bevor es auf das System angebracht wird), stellen
Sie eine libname.so Verbindung im aktuellen Verzeichnis gerade wie
system-wide her. Dann Gebrauch - L., zum von von GCC zu
erklären, im aktuellen Verzeichnis nach Bibliotheken zu schauen.
|
| 4. |
Wenn der volle Name des Verzeichnisses, in dem Sie die
Akte der geteilten Bibliothek anbrachten, nicht in /etc/ld.so.conf
verzeichnet wird, addieren Sie es, einen Verzeichnisweg pro Linie der
Akte.
|
| 5. |
Lassen Sie das ldconfig Programm laufen, das ein anderes
symlink im Verzeichnis bildet, in dem Sie die Akte der geteilten
Bibliothek vom soname zur Akte anbrachten, die, Sie anbrachten.
Sie läßt dann eine Eintragung in der dynamischen
Ladevorrichtung cachieren, damit die dynamische Ladevorrichtung Ihre
Bibliothek, wenn Sie die Programme laufen lassen, die mit ihr
verbunden werden, ohne zu müssen viele, Verzeichnisse zu suchen, um
sie zu finden findet.
Wenn Sie /etc/ld.so.cache entfernen, können Sie in der
LageSEIN, die Verlangsamung in Ihrem System zu ermitteln. Lassen
Sie ldconfig zu verbessertem /etc/ld.so.cache laufen.
|
Sie müssen Eintragungen in /etc/ld.so.conf verursachen
und ldconfig laufen lassen, nur wenn Sie die Bibliotheken anbringen,
während System libraries.if Sie erwarten, daß die Programme, die
gegen die Bibliothek verbunden werden, automatisch arbeiten.
Beispiel
Als extrem einfaches aber noch lehrreiches
Beispiel haben wir eine Bibliothek hergestellt, die eine kurze
Funktion enthält. Hier in seiner Ganzheit, ist libhello.c:
1: / * libhello.c */2: 3: # schließen
Sie ein
4: 5: heben Sie print_hello(void) auf {6:
printf("Hello, library.\n"); 7: }
Selbstverständlich benötigen wir ein Programm,
das libhello gebraucht:
1: / * usehello.c */2: 3: # schließen
Sie "libhello.h" 4 mit ein: 5: interne Hauptleitung
(Lücke) {6: print_hello(); 7: Rückkehr 0; 8:
}
Der Inhalt von libhello.h wird als Übung für den
Leser gelassen.
Um diese Bibliothek ohne sie in das System anzubringen zu
kompilieren und zu benutzen, unternehmen wir die folgenden Schritte:
| 1. |
Gebrauch - fPIC, zum einer Gegenstandakte für eine
geteilte Bibliothek zu errichten:
GCC - fPIC - Wand - g - c libhello.c |
| 2. |
Verbindung libhello gegen die C Bibliothek für beste
Auswirkungen auf alle Systeme:
GCC - g - geteiltes - Horizontalebene, -soname,
libhello.so.0 - O libhello.so.0.0 \ libhello.o - lc |
| 3. |
Stellen Sie einen Zeiger vom soname zur Bibliothek her:
ln - sf libhello.so.0.0 libhello.so.0
|
| 4. |
Stellen Sie einen Zeiger her, damit das
Verknüpfungsprogramm verwendet, wenn Anwendungen gegen - lhello
verbunden werden:
ln - sf libhello.so.0 libhello.so |
| 5. |
, gegen Gebrauch - L., zum des Verknüpfungsprogramms zu
veranlassen, um im aktuellen Verzeichnis nach Bibliotheken zu schauen,
und zu verwenden - lhello, zum es zu erklären welche Bibliothek zu
verbinden:
GCC - Wand - g - c usehello.c - O usehello.o GCC - g
- O usehello usehello.o - L. - lhello
(auf diese Weise, wenn Sie die Bibliothek auf das
System anbringen, anstatt, es im aktuellen Verzeichnis zu lassen, Ihre
Anwendung beruhigt Verbindung mit der gleichen Befehl Linie.) |
| 6. |
Lassen Sie jetzt usehello so laufen:
LD_LIBRARY_PATH=$(pwd) /usehello
Die LD_LIBRARY_PATH Klimavariable erklärt dem
System, wo man nach Bibliotheken sucht. Selbstverständlich
können Sie libhello.so anbringen. * im /usr/lib Verzeichnis und
vermeiden Sie, die LD_LIBRARY_PATH Klimavariable einzustellen, wenn
Sie mögen. |
dieses ist ein Artikel, der von Lorent Konenbal
hinzugefügt wird
Verzicht: Unsere Web site ist
nicht zu der Information verantwortlich, die durch diesen Artikel
enthalten wird. Dieser Artikel reflektiert keineswegs die
Ansichten, die Meinungen, die Gedanken oder den Glauben des
Artikelverzeichnisstabes.
Übersetzung Nachricht: Der Artikel ",
der geteilte Bibliotheken" anbringt, wurde mit einem automatisierten
Übersetzungsdienst übersetzt. Wir entschuldigen herzlichst uns
für alle mögliche Übersetzung Störungen, die auftraten.
Danke für das Verstehen.
|