Что такое файл .so?

45

У меня проблемы с Flash под Ubuntu, и я собирался попробовать обновить Alpha до Flash 10.1.

Проблема в том, что он пришел в виде файла .so, и я не могу найти никакой информации о том, что это такое.

Джон Моффит
источник
1
Другие авторы уже ответили на ваш вопрос, поэтому нет смысла добавлять еще один существенно идентичный текст. Я обращаю ваше внимание на эту ошибку, хотя ( bugs.launchpad.net/ubuntu/+source/flashplugin-nonfree/+bug/… ), так как, возможно, ваши симптомы похожи, и вы хотели бы посмотреть там.
Mac
1
Почти забыл: в описании ошибки, связанном выше, также есть обходной путь, который решает проблему (комментарий № 16). Удачи!
Mac

Ответы:

60

Файл .so представляет собой файл скомпилированной библиотеки. Он обозначает «Общий объект» и является аналогом Windows DLL.

Часто файлы пакетов помещают их в / lib или / usr / lib или в другое место, когда они установлены. Если вы извлечете файл .so в папку в вашем $ LD_LIBRARY_PATH, программа, которой требуется библиотека, должна иметь возможность использовать его.

В идеале прочтите сопроводительную документацию, чтобы убедиться, что она находится в нужном месте.

Если вы запускаете команду, подобную locate adobe-flashpluginтерминалу, вы можете увидеть некоторые существующие библиотеки с одинаковыми именами.

Андрей Фланаган
источник
2
Если Ubuntu не делает вещи совершенно иначе, чем другие динамические линкеры Linux, динамический линкер не ищет путь ($ PATH), а ищет фиксированный набор путей, а также каталоги, указанные в $ LD_LIBRARY_PATH. Смотрите man-страницы для ld.so и ldconfig для более подробной информации.
Крис Кливленд
Это звучит правильно - спасибо ... $ LD_LIBRARY_PATH не $ PATH. :-)
Андрей Фланаган
1
/ usr / lib и / lib встречаются гораздо чаще, чем / var / lib. На самом деле, довольно редко помещать библиотеку в / var / lib.
Qedi
Извините - был в спешке. :-) Я исправлю это ...
Андрей Фланаган
Хорошо ... Давайте представим, что у меня есть файл .so ... Что мне нужно для его использования?
Питто
10

Существует два типа библиотек Linux C / C ++, которые можно создать. Это статические библиотеки (.a) и динамически связанные библиотеки объектов-осколков (.so).

Когда дело доходит до (.so) , существует только одна форма этой библиотеки, но ее можно использовать двумя способами.

1) Динамически связаны во время выполнения, но статически осведомлены. Библиотеки должны быть доступны на этапе компиляции / компоновки. Общие объекты не включены в исполняемый компонент, но связаны с выполнением.

2) Динамически загружается / выгружается и связывается во время выполнения (т. Е. Подключаемый модуль браузера) с использованием системных функций загрузчика динамических ссылок.

Обычно файлы пакета помещают файлы ".so" в / lib или / usr / lib при установке.

Erandi
источник
3

Это динамически связанная библиотека общих объектов, аналог .dll-файла в Windows.

Вот пара постов по установке Flash 10 в Ubuntu x64 и x86:

Убедитесь, что вы удалили все предыдущие версии Flash перед установкой 10.

squillman
источник