- How to open the files with the extension («.so») [closed]
- 2 Answers 2
- SO файлы
- Как открывать, редактировать и конвертировать SO файлы
- Как открыть файл SO
- Как конвертировать SO файлы
- Дополнительная информация о файлах SO
- Все еще не можете открыть файл?
- Русские Блоги
- Gcc компилирует и генерирует файлы .out, .o, .a, .so под Linux
- 1 , Введение в тип файла
- 2. Создание исполняемого файла
- 3 , O генерация целевого файла
- 4. Создание статической библиотеки.
- (1) Создайте статическую библиотеку
- (2) Вызов статической библиотеки
- 5. Итак, генерация общей библиотеки
- (1) Создайте так
- (2) Назовите так
How to open the files with the extension («.so») [closed]
How to open the files with the extension («.so») like libphpcpp.so and («ELF») format file in editor for editing?
probably with Hex Editor like Bless but if you change the files that are not meant to be changed, then things can happen
2 Answers 2
.so files are «Shared Libraries» (https://en.wikipedia.org/wiki/Library_(computing)#Shared_libraries), they are binary-files meant to be dynamically linked to an executable and as such are unusable on their own.
A Library is a collection of related functions and reusable resources to be used by software applications. Shared-libraries are linked at runtime (dynamic linking) as opposed to compile-time hence their name.
If you want to open a shared-library file, you would open it like any other binary file — with a hex-editor (also called a binary-editor). There are several hex-editors in the standard repositories such as GHex (https://packages.ubuntu.com/xenial/ghex) or Bless (https://packages.ubuntu.com/xenial/bless). The same can be done for ELF executables.
You can install either of them with the following command(s):
But bear in mind though, shared-objects (.so files) are binary files and therefore aren’t meant to be edited manually; you might be able to edit a few strings or values with a hex-editor but you won’t be able to do much since they are unusable on their own.
SO файлы
Объясните пожалуйста что такое SO файлы? это некий аналог DLL или совсем их другой оперы?
> это некий аналог DLL
Собственно, это и есть динамически подгружаемые библиотеки.
Почитайте man ld.so, довольно интересно.
сложно набрать в яндексе разделяемые библиотеки линукс?
разделяемый обьект,
может быть как аналогом .DLL
так и «плагином», открываемым из программы через dlopen() функцию
в отличие от Dynamically Loadable Library
> в отличие от Dynamically Loadable Library
в оффтопике тоже можно реализовать плагинную систему на основе dll.
> в отличие от Dynamically Loadable Library
жаль разработчики qt этого не знают, а то у них все плагины в виде .dll … 😉
dll можно вручную загрузить.
там .so открываемые через dlopen()
в винде нет .so и dlopen(), насколько я помню 😉
Зато есть LoadLibrary() и LoadLibraryEx(), если склероз меня не подводит.
dll открываются через LoadLibrary
>Dynamically Loadable Library
Dynamic-Link Libraries. Хотя бы иногда надо читать MSDN.
в отличие от Dynamically Loadable Library
Неужели есть принципиальные отличия между SO и DLL?
разве что во внутренней архитектуре. а так принцип действия один и тот же;
те в линуксе может существовать два варианта библтиотек — DLL и SO ?
те в линуксе может существовать два варианта библтиотек — DLL и SO ?
Так dll же мастдайные аналоги so, как вы их в линуксе без wine’а использовать собираетесь?
ну как писалось выше в qt то они используются. просто пишу тут кое что для андроида используя jni и тут есть эти so файлы.
Итак: в линуксе библитета это SO файл, а в винде — DLL? Я правильно понял?
Как открывать, редактировать и конвертировать SO файлы
Файл с расширением .SO является файлом общей библиотеки. Они содержат информацию, которая может использоваться одной или несколькими программами для разгрузки ресурсов, так что приложения, вызывающие файл SO, не должны фактически предоставлять файл SO
Например, один файл SO может содержать информацию и функции о том, как быстро выполнить поиск по всему компьютеру. Несколько программ могут затем вызывать этот SO-файл для использования этой функции в своих соответствующих программах.
Однако вместо того, чтобы компилировать его в собственном двоичном коде программы, SO-файл служит расширением, которое программа просто должна вызвать, чтобы использовать ее утилиты. Файл SO даже может быть обновлен/заменен позже без необходимости внесения каких-либо изменений в собственный код.
Файлы общей библиотеки аналогичны файлам динамической библиотеки (DLL), используемым в Windows, и файлам динамической библиотеки Mach-O (DYLIB) в macOS, за исключением того, что файлы SO находятся в системах на базе Linux и в ОС Android.
SO не просто ссылается на файл общей библиотеки. Это также аббревиатура для параметров сервера , объект службы , перегрузка системы , только отправка , сбой системы , последовательный вывод и застрял в открытом состоянии . Однако не путайте это с ОС, аббревиатурой от операционной системы.
Как открыть файл SO
SO файлы могут быть технически открыты с помощью GNU Compiler Collection, но эти типы файлов не предназначены для просмотра или использования так же, как файлы другого типа. Вместо этого они просто помещаются в соответствующую папку и автоматически используются другими программами через загрузчик динамических ссылок Linux.
Однако вы можете прочитать SO-файл как текстовый файл, открыв его в текстовом редакторе, таком как Leafpad, gedit, KWrite или Geany, если вы работаете в Linux, или Notepad ++ в Windows. Маловероятно, однако, что текст будет в удобочитаемом формате.
Как конвертировать SO файлы
Нам неизвестно о каких-либо программах, которые могут конвертировать SO в DLL для использования в Windows, и, учитывая, что эти файлы делают, они вряд ли есть. Это также не простая задача конвертировать SO в другие форматы файлов, такие как JAR или A (файл Stat Library).
Возможно, вы сможете «конвертировать» SO-файлы в JAR-файлы, просто заархивировав их в формат архивного файла, например .ZIP, а затем переименовав его в .JAR.
Дополнительная информация о файлах SO
Имя файла общей библиотеки называется soname . Он начинается с “lib” в начале, за которым следует имя библиотеки, а затем расширение .SO. Некоторые файлы общей библиотеки также имеют другие номера, добавленные в конце после «.SO» для обозначения номера версии.
Вот лишь несколько примеров: libdaemon.SO.14 , libchromeXvMC.SO.0 , libecal-1.2.SO.100 , libgdata.SO.2 и libgnome-bluetooth.SO.4.0.1 .
Число в конце позволяет иметь несколько версий одного и того же файла, не вызывая проблем с перекрывающимися именами. Эти файлы обычно хранятся в /lib/ или /usr/lib/.
На устройстве Android SO файлы хранятся в APK в /lib //. Здесь «ABI» может быть папкой с именем armeabi , armeabi-v7a , arm64-v8a , mips , mips64 , x86 или x86_64 . Файлы SO в правильной папке, которая относится к устройству, используются для установки приложений через файл APK.
Файлы общей библиотеки иногда называют динамически связанными библиотеками общих объектов , общими объектами , общими библиотеками и библиотеками общих объектов .
Все еще не можете открыть файл?
Очевидная причина, по которой вы, возможно, не сможете открыть SO-файл, заключается в том, что это не совсем SO-файл. Вы можете просто иметь файл, который имеет несколько общих букв в качестве этого расширения файла. Подобные расширения звучащих файлов не обязательно означают, что форматы файлов похожи или что они могут работать с одними и теми же программами.
Например, формат файла ISO является популярным форматом, который во многом похож на «.SO» в конце файла, но оба они не связаны и не могут открываться с помощью одних и тех же программ.
Другой пример можно увидеть с файлами SOL, которые являются файлами локальных общих объектов Flash. Они используются с Adobe Flash и не связаны с SO-файлами.
Русские Блоги
Gcc компилирует и генерирует файлы .out, .o, .a, .so под Linux
1 , Введение в тип файла
.out Это исполняемый файл, эквивалентный исполняемому файлу при выигрыше;
.o Скомпилируйте промежуточный объектный файл, который эквивалентен .obj при win;
.a Это статическая библиотека, которую можно получить путем связывания нескольких .o и использовать для статического связывания;
.so Общая библиотека, используемая для динамического связывания, эквивалентна .dll при win;
2. Создание исполняемого файла
3 , O генерация целевого файла
Получите hello.o, потому что это промежуточный файл, его нельзя запустить
4. Создание статической библиотеки.
(1) Создайте статическую библиотеку
Создать статическую библиотеку из файла .o , Соглашение об именовании имени файла статической библиотеки — lib в качестве префикса, за которым следует имя статической библиотеки с расширением .a.
Например: мы создадим статическую библиотеку с именем hello, тогда имя файла статической библиотеки будет libhello.a.
(2) Вызов статической библиотеки
#include void hello(); int main()
Скомпилируйте main.cpp и статически свяжите libhello.a:
gcc main.cpp libhello.a -o main.out
5. Итак, генерация общей библиотеки
(1) Создайте так
Создание файлов динамической библиотеки из файлов .o , Соглашение об именах файлов динамической библиотеки аналогично соглашению об именах имен файлов статических библиотек, и к имени динамической библиотеки добавляется префикс lib, но его
Например: мы создадим динамическую библиотеку с именем hello, тогда имя файла динамической библиотеки будет libhello.so.
gcc -shared -fPIC -o libhello.so hello.o
Выполнили и обнаружили ошибку:
Это потому, что опция -fPIC не используется при генерации hello.o, поэтому мы используем
Регенерируйте hello.o и снова выполните команду generate so.
(2) Назовите так
gcc -o main.out main.cpp -L. -lhello
Выполнение, мы обнаружили ошибку:
Мы обнаружили ошибку, Оказалось, что файл динамической библиотеки libhello.so не может быть найден. Когда программа работает, она будет искать необходимый файл динамической библиотеки в таких каталогах, как / usr / lib и / lib.
Если обнаружена, загрузите динамическую библиотеку, иначе она выдаст аналогичные ошибки и завершит работу программы.
Мы перемещаем файл libhello.so в каталог / usr / lib, а затем запускаем main.out, чтобы его можно было вызвать как обычно.