[devel] Сборка heartbeat с --as-needed
Eugene Prokopiev
=?iso-8859-1?q?prokopiev_=CE=C1_stc=2Edonpac=2Eru?=
Ср Сен 27 13:20:33 MSD 2006
Damir Shayhutdinov пишет:
>>Как в общем случае догадаться, что необходимо дописать в этот файл?
>>
>>В моем случае ситуация несколько облегчается тем, что есть
>>heartbeat-alt-build.patch от lakostis, правда для версии 2.0.4. В нем
>>фрагмент, относящийся к crm/pengine/Makefile.am, выглядит так:
>
>
>>Можно ли как нибудь сделать такой вывод (или другой, если это ошибочен)
>>не на основании патча к 2.0.4, а на основании вывода make?
>
> Возможно, это поможет:
> http://lists.altlinux.org/pipermail/sisyphus/2006-July/084838.html
спасибо
пробую
> надо найти, в какой библиотеке находятся отсутствующие символы.
> Обычно можно догадаться по названию, но если это не ясно - придется
> искать. Я обычно делаю первичный поиск грепов по всем файлам *.so в
> каталоге сборки, а потом с помощью nm -CD bar/.libs/libbar.so | grep
> megabar определяю, есть ли этот символ в библиотеке libbar.so. (Если
> напротив символа стоит U - то нету, а если T - то есть).
>
> Если выяснено, что unresolved символы находятся в библиотеке
> libbaz.so, тогда надо добавить в строчку -lbaz - то есть примерно
> так:
>
> libfoo_la_LIBADD = -lbar -lbaz
$ find -name *.so | xargs grep add_hash_param
Binary file ./lib/crm/pengine/.libs/libpe_rules.so matches
Binary file ./lib/crm/pengine/.libs/libpe_status.so matches
$ nm -CD ./lib/crm/pengine/.libs/libpe_status.so | grep add_hash_param
00005640 T add_hash_param
$ nm -CD ./lib/crm/pengine/.libs/libpe_rules.so | grep add_hash_param
00003bf0 T add_hash_param
Вообще, Т означает, что функция экспортируется? Это нормально, что одну
функцию экспортирует несколько библиотек?
В libpengine_la_LIBADD нужно добавить обе библиотеки или выбирать, какую
из? На основании чего?
>>После make clean, ./configure, make получаю:
>>gmake[2]: *** No rule to make target
>>`../../lib/crm/cib/libpe_status.la', needed by `libpengine.la'. Stop.
>
>
> Проверьте путь к библиотеке. Также, возможно, вам надо будет поменять
> порядок директорий при сборке, чтобы libpe_status.la собиралась раньше
> чем libpengine.la
Проверил. Действительно, проблема в этом. Исправил, пока собирается.
Еще вопрос: я делаю make clean, ./configure, make. Это неправильно? Для
чего и на каком этапе нужен autoreconf -fisv? Правильно ли я понимаю,
что это замена make clean, ./configure? Для чего autoreconf -fisv нужен
в спеке, если исходники после наложения патчей до %configure еще не
сконфигурированы (т.е. ./configure не выполнен)
> _______________________________________________
> Devel mailing list
> Devel на lists.altlinux.org
> https://lists.altlinux.org/mailman/listinfo/devel
--
С уважением, Прокопьев Евгений
Подробная информация о списке рассылки Devel