Hinweis: Das Forum wird geschlossen! Neue Registrierungen sind nicht mehr möglich!

 Zurück zu Pro-Linux   Foren-Übersicht   FAQ     Suchen    Mitgliederliste
execute fuer .so

 
Neuen Beitrag schreiben   Auf Beitrag antworten    Pro-Linux Foren-Übersicht -> Sonstiges
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
cirad
Gast





BeitragVerfasst am: 22. Mai 2001 15:20   Titel: execute fuer .so

Warum sind .so-Files mit dem Executerecht versehen? Funktionieren tut auch alles ohne dieses Recht - scheint zumindest so. Warum muessen die also ausfuehrbar sein?

Und was ist der Unterschied zwischen .la und .so?

Schonmal Danke fuer Antworten!
 

Sebastian Ude
Gast





BeitragVerfasst am: 22. Mai 2001 16:04   Titel: Re: execute fuer .so

.la-Dateien sind vom GNU libtool generierte Text-Dateien, die Informationen über die eigentliche Library enthalten (Abhängigkeiten usw.) und das Linken von Libraries mittels libtool erleichtern sollen.


Für weitere Informationen siehe:

http://www.gnu.org/software/libtool/manual.html
 

ronny



Anmeldungsdatum: 24.04.2001
Beiträge: 313
Wohnort: Muehlacker, BW

BeitragVerfasst am: 22. Mai 2001 19:24   Titel: Re: execute fuer .so

die .so files sind i.d.r. nur links auf datei mit versionsnummer z.b. .so.3.2
und symlinks haben immer alle bits gesetzt, da nur die rechte der verlinkten datei zählen
 
Benutzer-Profile anzeigen Private Nachricht senden

ronny



Anmeldungsdatum: 24.04.2001
Beiträge: 313
Wohnort: Muehlacker, BW

BeitragVerfasst am: 22. Mai 2001 19:25   Titel: Re: execute fuer .so

zu schnell gedrückt

Zuletzt bearbeitet von ronny am 22. Mai 2001 19:25, insgesamt 1-mal bearbeitet
 
Benutzer-Profile anzeigen Private Nachricht senden

cirad
Gast





BeitragVerfasst am: 23. Mai 2001 18:12   Titel: Re: execute fuer .so

Ah, danke. Das beantwortet mir fast alles Fragen! Nur eine noch. Was ist .a ???
 

Sebastian Ude
Gast





BeitragVerfasst am: 28. Mai 2001 13:20   Titel: Re: execute fuer .so

*.a sind statische Libraries.

Um mal ganz grob den Unterschied zwischen dynamischen und statischen Libraries zu erklären:

Wenn ein Programm gegen eine statische Library geladen wird, dann wird der Code aus der statischen Library (*.a-Datei) in das Programm hineinkopiert.

Das hat viele Nachteile:

- Die Binaries werden sehr gross
- Library-Code dupliziert sich in allen Binaries -> Speicherplatzverschwendung
- Nach einem Upgrade der Libraries müssen alle Applikationen neu gelinkt werden, um von der neuen Version der Library zu profitieren

Und es gibt noch viel mehr Nachteile.


Wird ein Programm allerdings gegen eine dynamische Library gelinkt (*.so), dann wird im Programmcode lediglich auf den Code in der Library verwiesen.
Der Code bleibt also (im Gegensatz zum statischen Linken) in der Library, und diese wird halt während der Runtime geladen.

Dadurch ergeben sich einige Vorteile:

- Binaries bleiben klein
- Kein uneffizient duplizierter Code
- Nach einem Update der Library nicht zwingend ein Neu-Linken der Applikation notwendig


In manchen Situationen macht es allerdings Sinn, eine Library statisch einzubinden.
Das ist zum Beispiel der Fall, wenn man nicht vorraussetzen möchte, dass auf dem System des Benutzers die dynamische Library vorhanden ist. Das muss nämlich bei Binaries, die dynamisch gegen eine Library gelinkt wurden der Fall sein.


Technisch gesehen ist eine *.a-Datei ein ar-Archiv, dass einzelne Objektdateien (*.o) sowie einen Index der in der Library vorhandenen Symbole (generiert mit ranlib oder der 's'-Option von ar - wird vom Linker benötigt) enthält.

Theoretisch könntest du eine statische Library (*.a-Datei) mit 'ar xv' entpacken und hättest dann die einzelnen Objektdateien, die du manuell verlinken könntest.
 

Beiträge vom vorherigen Thema anzeigen:   
     Pro-Linux Foren-Übersicht -> Sonstiges Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehen Sie zu:  

Powered by phpBB © phpBB Group
pro_linux Theme © 2004 by Mandaxy