[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