[Comm] The End of .la Wars? (was: СборкаSylpheed-0.9.10)
Alexey Novikov
=?iso-8859-1?q?Shader_=CE=C1_yandex=2Eru?=
Пт Май 21 09:12:42 MSD 2004
Hi, All!
Итак, подвожу итоги своих разборок с libtool.
Это актуально для тех, чья система образца середины
".la wars", т.е. у кого часть .la файлов
присутствует в системе, а часть нет.
Т.е. если у Вас не собирается что-нибудь
использующее libtool, а именно ругается вроде
ld: <что-то там>.la No such file or directory
то это Вам будет интересно.
1. Поправить configure. Ну это классическая
рекомендация в духе
subst 's/\.la\"/.so\"/' configure
перед этим самым configure.
Но этого может оказаться недостаточно.
Если при сборке используется libtool, т.е. строки вида
/bin/sh ../libtool ...
то возникает следующая ситуация: если оно найдет
хотя бы одну из необходимых ему .la оно будет считать,
что и для всего остального эти .la присутствуют.
Для разрешения этой ситуации предлагаются следующие
решения:
2.1 Удалить/перенести все .la куда-нибудь, где их
никто не будет искать. Этот способ не подходит
при сборке в hasher и sandman.
2.2 Перед configure выполнить
subst 's/found=yes/#&/' ltmain.sh
Это не отучит libtool искать .la,
но отучит его пытаться их линковать.
Этот способ работает, если собираемый Вами
проект сделан с использованием достаточно
свежего libtool (точно работает для libtool-1.5)
2.3 Если версия libtool, с помощью которой был
сделан проект слишком старая/новая, можно поступить
следующим образом:
libtoolize -c -f # это обновит ltmain.sh +... до Вашей версии
subst 's/found=yes/#&/' ltmain.sh
2.4 Пропатчить соответствующим образом Ваш libtool
и использовать только
libtoolize -c -f
Вопрос к знатокам libtool: Это ничего не сломает?
--
С уважением,
Алексей Новиков
Подробная информация о списке рассылки community