[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