* [devel] взаимозависимые библиотеки
@ 2006-09-19 13:46 Ildar Mulyukov
2006-09-19 14:09 ` Damir Shayhutdinov
0 siblings, 1 reply; 6+ messages in thread
From: Ildar Mulyukov @ 2006-09-19 13:46 UTC (permalink / raw)
To: ALT Devel discussion list
Имею на руках такой фрукт (продукт): libgda
Кроме /usr/lib/libgda.so.%version, также имеются в наличии
libgda_handlers-3.so.3.0.0 и ещё пара подобных со следующими свойствами:
. libgda.so.3.0.0 зависит от libgda_handlers-3.so.3.0.0
. libgda_handlers-3.so.3.0.0 зависит от libgda.so.3.0.0 (имеет ссылки
на её функции)
Естественно, при сборке сначала собирается libgda_handlers-3.so, ссылки
на функции из основной библиотеки не мешают собраться этой библиотеке,
но verify-elf её не пропускает (и правильно делает)
Вопрос: как правильно преодолеваются такие случаи?
Я пробовал следующий изврат в спеке:
...
%make
rm -f libgda/*/.libs/*.so* libgda/*/*.la
%make LIBS="`pwd`/libgda/libgda-3.la"
Но, как оказалось, make+libtool таким образом не обмануть :(
Заранее спасибо.
С уважением, Ильдар.
--
Ildar Mulyukov,
engineer
============================
email: ildar@nexttel.kz
site: http://www.nexttel.kz/
============================
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [devel] взаимозависимые библиотеки
2006-09-19 13:46 [devel] взаимозависимые библиотеки Ildar Mulyukov
@ 2006-09-19 14:09 ` Damir Shayhutdinov
2006-09-19 14:50 ` Led
2006-09-20 4:55 ` Ildar Mulyukov
0 siblings, 2 replies; 6+ messages in thread
From: Damir Shayhutdinov @ 2006-09-19 14:09 UTC (permalink / raw)
To: ALT Devel discussion list
> Естественно, при сборке сначала собирается libgda_handlers-3.so, ссылки
> на функции из основной библиотеки не мешают собраться этой библиотеке,
> но verify-elf её не пропускает (и правильно делает)
>
> Вопрос: как правильно преодолеваются такие случаи?
Правильно - разделением кольцевой зависимости (созданием третьей
либы) на уровне апстрима.
Допустим, А использует функции из B, а B - из A.
Тогда библиотека B разделяется на библиотеку B' и C.
В библиотеку C выносятся все функции библиотеки B, которые использует
библиотека A. При этом C не должна иметь зависимостей на A или B'.
Таким образом, получается зависимость
A -> C
B' -> C, A
Идеологически неверно, но приемлемо решать методом
%_set_verify_elf_method unresolved=relaxed, но это естественно, намного проще.
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [devel] взаимозависимые библиотеки
2006-09-19 14:09 ` Damir Shayhutdinov
@ 2006-09-19 14:50 ` Led
2006-09-19 15:25 ` Damir Shayhutdinov
2006-09-20 4:55 ` Ildar Mulyukov
1 sibling, 1 reply; 6+ messages in thread
From: Led @ 2006-09-19 14:50 UTC (permalink / raw)
To: ALT Devel discussion list
В сообщении от 19 сентября 2006 17:09 Damir Shayhutdinov написал(a):
> > Естественно, при сборке сначала собирается libgda_handlers-3.so, ссылки
> > на функции из основной библиотеки не мешают собраться этой библиотеке,
> > но verify-elf её не пропускает (и правильно делает)
> >
> > Вопрос: как правильно преодолеваются такие случаи?
>
> Правильно - разделением кольцевой зависимости (созданием третьей
> либы) на уровне апстрима.
> Допустим, А использует функции из B, а B - из A.
>
> Тогда библиотека B разделяется на библиотеку B' и C.
> В библиотеку C выносятся все функции библиотеки B, которые использует
> библиотека A. При этом C не должна иметь зависимостей на A или B'.
>
> Таким образом, получается зависимость
> A -> C
> B' -> C, A
>
> Идеологически неверно, но приемлемо решать методом
> %_set_verify_elf_method unresolved=relaxed, но это естественно, намного
> проще.
Оно, конечно "идеологически неверное", но если на 100% уверен в том, для чего
это делаешь, то ИМХО можно:)
--
Led.
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [devel] взаимозависимые библиотеки
2006-09-19 14:09 ` Damir Shayhutdinov
2006-09-19 14:50 ` Led
@ 2006-09-20 4:55 ` Ildar Mulyukov
2006-09-20 7:47 ` Damir Shayhutdinov
1 sibling, 1 reply; 6+ messages in thread
From: Ildar Mulyukov @ 2006-09-20 4:55 UTC (permalink / raw)
To: devel
On 19.09.2006 20:09:32, Damir Shayhutdinov wrote:
> > Естественно, при сборке сначала собирается libgda_handlers-3.so,
> > ссылки на функции из основной библиотеки не мешают собраться этой
> > библиотеке, но verify-elf её не пропускает (и правильно делает)
> > Вопрос: как правильно преодолеваются такие случаи?
>
> Правильно - разделением кольцевой зависимости (созданием третьей
> либы) на уровне апстрима. Допустим, А использует функции из B, а B -
> из A.
> Тогда библиотека B разделяется на библиотеку B' и C.
> В библиотеку C выносятся все функции библиотеки B, которые использует
> библиотека A. При этом C не должна иметь зависимостей на A или B'.
> Таким образом, получается зависимость
> A -> C
> B' -> C, A
> Идеологически неверно, но приемлемо решать методом
> %_set_verify_elf_method unresolved=relaxed, но это естественно,
> намного проще.
Скажите, а даст ли какие-нибудь положительные результаты такая
процедура:
1. Компилим А
2. Компилим В с привязкой А
3. Перекомпилим А с привязкой В
Как я писал, с наскоку мне не удалось обхитрить make+libtool. Но, быть
может, это направление небезнадёжно?
С уважением, Ильдар
--
Ildar Mulyukov,
free SW designer/programmer/packager
=========================================
email: ildar@altlinux.ru
ALT Linux Sisyphus http://www.sisyphus.ru
=========================================
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [devel] взаимозависимые библиотеки
2006-09-20 4:55 ` Ildar Mulyukov
@ 2006-09-20 7:47 ` Damir Shayhutdinov
0 siblings, 0 replies; 6+ messages in thread
From: Damir Shayhutdinov @ 2006-09-20 7:47 UTC (permalink / raw)
To: ALT Devel discussion list
> Скажите, а даст ли какие-нибудь положительные результаты такая
> процедура:
> 1. Компилим А
> 2. Компилим В с привязкой А
> 3. Перекомпилим А с привязкой В
>
> Как я писал, с наскоку мне не удалось обхитрить make+libtool. Но, быть
> может, это направление небезнадёжно?
Даже если удастся на этапе сборки, на этапе установки по make install
libtool будет делать relink, и жестоко обломается. Придется тогда и
там исправлять.
ИМХО, геморрой не стоит свеч. Проще unresolved=relaxed
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2006-09-20 7:47 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2006-09-19 13:46 [devel] взаимозависимые библиотеки Ildar Mulyukov
2006-09-19 14:09 ` Damir Shayhutdinov
2006-09-19 14:50 ` Led
2006-09-19 15:25 ` Damir Shayhutdinov
2006-09-20 4:55 ` Ildar Mulyukov
2006-09-20 7:47 ` Damir Shayhutdinov
ALT Linux Team development discussions
This inbox may be cloned and mirrored by anyone:
git clone --mirror http://lore.altlinux.org/devel/0 devel/git/0.git
# If you have public-inbox 1.1+ installed, you may
# initialize and index your mirror using the following commands:
public-inbox-init -V2 devel devel/ http://lore.altlinux.org/devel \
devel@altlinux.org devel@altlinux.ru devel@lists.altlinux.org devel@lists.altlinux.ru devel@linux.iplabs.ru mandrake-russian@linuxteam.iplabs.ru sisyphus@linuxteam.iplabs.ru
public-inbox-index devel
Example config snippet for mirrors.
Newsgroup available over NNTP:
nntp://lore.altlinux.org/org.altlinux.lists.devel
AGPL code for this site: git clone https://public-inbox.org/public-inbox.git