Подтвердить что ты не робот

В чем разница между .so и .a файлами?

Я пытаюсь скомпилировать стороннюю библиотеку (в linux) и видеть, что она генерирует файлы libsomething.a У меня есть другие мои библиотеки, которые являются .so файлом

Но кажется, что даже .a является общей библиотекой и может использоваться так же, как и .so lib

Так есть ли разница между этими двумя? или они одинаковы с другими соглашениями об именах.

4b9b3361

Ответ 1

Но кажется, что даже .a является общей библиотекой

Нет, это статическая библиотека.

и может использоваться так же, как и .so lib

Если вы имеете в виду ссылку на него, то да. Но вы не можете dlopen() файл .a, который вы можете сделать с .so файлом.

Вы всегда можете попросить нашего старого друга дядя G ответить на ваши вопросы.

Ответ 2

Файл A .a является статической библиотекой, а файл .so является динамической библиотекой общего объекта, подобной DLL в Windows.

A .a может быть включен как часть программы во время компиляции, а .so может импортироваться, а загрузка программы.

Ответ 3

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