libtool: конвертировать/извлекать la в a

Можно ли преобразовать или извлечь файл из библиотеки .la в .a?

У меня есть проект, в котором мое приложение статически связано со всеми библиотеками, но некоторые из них создаются с помощью libtool (.la libs), а другие создаются с помощью gcc (.a lib). В этом ответе говорится, что в подкаталоге .libs должен быть .a libfile, но я нашел там только . la, .so и .o, вероятно, потому, что проект lib не был настроен с параметром --enable-static.


person Grzegorz Głowacki    schedule 23.09.2016    source источник


Ответы (1)


что в подкаталоге .libs должен быть .a libfile, но я нашел там только файлы .la, .so и .o, вероятно, потому, что проект lib не был настроен с --enable-static.

Вот как это звучит и для меня. Это нужно сделать, чтобы получить файл .a. Библиотеки, которые вы создаете с помощью libtool, вероятно, компилируются с помощью gcc.

Можно ли преобразовать или извлечь файл из библиотеки .la в .a?

Нет. В файле .la нет объектного кода, который можно было бы извлечь в файл .a. Как говорится в ссылке на другой ответ, это в основном файл метаданных о том, как связать и где находятся файлы и т. д. Файл .la удобочитаем, поэтому, если вы действительно хотите знать, что там происходит, вы можете изучить его.

person ldav1s    schedule 25.09.2016
comment
Если libtool — это только файл метаданных, и он может линковаться без библиотеки .a, это означает, что он должен линковаться со всеми файлами .o, не так ли? - person Grzegorz Głowacki; 26.09.2016
comment
Для статических библиотек файл .a содержит только файлы .o (например, объединение двух файлов .a, показывая этапы извлечения и этап создания ). Как видно из этого примера, при создании .a библиотек не происходит никакого связывания, только архивирование. Связывание происходит позже, когда исполняемый файл создается. - person ldav1s; 26.09.2016