2009-12-31 2 views
2

Итак, после того, как я запустил libtool и вытащил файл libfoo.lo и foo.o из моего источника библиотеки, как мне преобразовать файл libfoo.lo в обычную библиотеку Linux, такую ​​как libfoo.so.1.0.0, чтобы я мог установить и связать ее с моей целевой системой?Как установить и использовать общую библиотеку libtool (файлы .lo)?

ответ

6

Из выходов, упомянутых в вопросе, похоже, что вы запустили libtool с --mode = режим компиляции. Вам нужно будет запустить libtool снова с помощью -mode = link для создания библиотек .a и .so.

libtool - просто простая оболочка для gcc, ln ar и ranlib, которая необходима для создания библиотек. Все, что он делает, - это запустить gcc, добавив необходимые параметры, чтобы убедиться, что ваши статические и общие библиотеки созданы правильно.

При компиляции libtool вставляет тег -fPIC, чтобы обеспечить необходимое генерирование независимого от позиции кода, необходимого для разделяемых библиотек. Файлы .o являются обычными объектными файлами, которые могут быть заархивированы в статический файл .a. Файлы .lo - это объектные файлы с независимым от положения кодом, который теперь можно связать с .so-файлом.

При связывании libtool будет запускаться ar для создания статической библиотеки или ln для связывания файлов объектов с разделяемой библиотекой .so.

libtool также может установить библиотеку при необходимости с помощью команды -mode = install.

См. http://www.gnu.org/software/libtool/manual/libtool.html для получения дополнительной информации.

Помните, что при создании исполняемого файла всегда есть две стадии, компиляция и компоновка.

+0

'libtool --mode = finish' также необходимо использовать для« завершения установки библиотек libtool »для некоторых систем. Просто компилировать/link/install недостаточно. – dajobe

Смежные вопросы