Co to jest plik .so?

45

Mam problemy z Flashem pod Ubuntu i zamierzałem spróbować uaktualnić do wersji Alpha Flash 10.1.

Problem polega na tym, że przyszedł jako plik .so i nie mogę znaleźć żadnych informacji na temat tego, co to jest.

John Moffitt
źródło
1
Inne plakaty już odpowiedziały na twoje pytanie, więc nie ma sensu dodawać kolejnego zasadniczo identycznego tekstu. Zwracam jednak uwagę na ten błąd ( bugs.launchpad.net/ubuntu/+source/flashplugin-nonfree/+bug/… ), ponieważ być może twoje objawy są podobne i chciałbyś tam zajrzeć.
Mac
1
Prawie zapomniałem: w powyższym opisie błędu znajduje się również obejście, które rozwiązuje problem (komentarz # 16). Powodzenia!
Mac
Temat
RBT

Odpowiedzi:

60

Plik .so jest skompilowanym plikiem biblioteki. Oznacza „obiekt współdzielony” i jest analogiczny do biblioteki DLL systemu Windows.

Często pliki pakietów umieszczają je w katalogu / lib lub / usr / lib lub w podobnym miejscu po ich zainstalowaniu. Jeśli rozpakujesz plik .so do lokalizacji w $ LD_LIBRARY_PATH, program, który wymaga biblioteki, powinien móc go użyć.

Najlepiej przeczytaj dołączoną dokumentację, aby upewnić się, że znajduje się ona we właściwej lokalizacji.

Jeśli uruchomisz polecenie takie jak locate adobe-flashpluginz terminala, możesz zobaczyć niektóre istniejące biblioteki o podobnych nazwach.

Andrew Flanagan
źródło
2
O ile Ubuntu nie robi rzeczy zupełnie inaczej niż inne dynamiczne linkery Linuksa, dynamiczny linker nie przeszukuje ścieżki ($ PATH), ale przeszukuje stały zestaw ścieżek, a także katalogi określone w $ LD_LIBRARY_PATH. Więcej informacji na stronach podręcznika ld.so i ldconfig.
Chris Cleeland,
Brzmi dobrze - dzięki ... $ LD_LIBRARY_PATH nie $ PATH. :-)
Andrew Flanagan
1
/ usr / lib i / lib są znacznie bardziej popularne niż / var / lib. W rzeczywistości umieszczenie biblioteki w / var / lib jest dość rzadkie.
qedi
Przepraszam - spieszyłem się. :-) Naprawię to ...
Andrew Flanagan,
Ok .. Wyobraźmy sobie, że mam plik .so ... Czego potrzebuję, aby go „użyć”?
Pitto,
10

Istnieją dwa typy bibliotek Linux C / C ++, które można utworzyć. Są to biblioteki statyczne (.a) i dynamicznie połączone biblioteki obiektów niezależnych (.so)

Jeśli chodzi o (.so) , istnieje tylko jedna forma tej biblioteki, ale można jej używać na dwa sposoby.

1) Dynamicznie połączony w czasie wykonywania, ale świadomy statystycznie. Biblioteki muszą być dostępne podczas fazy kompilacji / łącza. Współużytkowane obiekty nie są zawarte w komponencie wykonywalnym, ale są powiązane z wykonaniem.

2) Dynamicznie ładowane / rozładowywane i łączone podczas wykonywania (tj. Wtyczka do przeglądarki) za pomocą funkcji systemowych modułu ładującego z dynamicznym łączeniem.

Zwykle pliki pakietu umieszczają pliki „.so” w katalogu / lib lub / usr / lib podczas instalacji.

Erandi
źródło