* [devel] ldd: почему?
@ 2006-09-28 8:49 Ildar Mulyukov
2006-09-28 8:57 ` Damir Shayhutdinov
2006-09-28 10:01 ` Sergey Vlasov
0 siblings, 2 replies; 9+ messages in thread
From: Ildar Mulyukov @ 2006-09-28 8:49 UTC (permalink / raw)
To: ALT Devel discussion list
Упаковывая libgnomedb, столкнулся с такой ситуацией: (вендор думал и
сделал) libgnomedb_entry_builtin_plugins_la_LIBADD = -lssl. Линковка
прошла успешно. Но verify-elf не дремал и заругался: undefined
reference.
Оказалось, что недостающие символы предоставляются -lcrypto, но они
присутствовали в -lssl, т.к. он _использует_ эти символы (из crypto).
Вопрос: почему наш binutils позволяет собирать такие случаи?
--
Ildar Mulyukov,
free SW designer/programmer/packager
=========================================
email: ildar@altlinux.ru
ALT Linux Sisyphus http://www.sisyphus.ru
=========================================
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [devel] ldd: почему?
2006-09-28 8:49 [devel] ldd: почему? Ildar Mulyukov
@ 2006-09-28 8:57 ` Damir Shayhutdinov
2006-09-29 4:52 ` Ildar Mulyukov
2006-09-28 10:01 ` Sergey Vlasov
1 sibling, 1 reply; 9+ messages in thread
From: Damir Shayhutdinov @ 2006-09-28 8:57 UTC (permalink / raw)
To: ALT Devel discussion list
> Оказалось, что недостающие символы предоставляются -lcrypto, но они
> присутствовали в -lssl, т.к. он _использует_ эти символы (из crypto).
>
> Вопрос: почему наш binutils позволяет собирать такие случаи?
Потому что --as-needed.
Со статической сборкой было бы то же самое.
Указывайте все библиотеки, символы которых используются в вашей
библиотеке, в строке линковки и у вас не будет проблем ни со
статической сборкой, ни с --as-needed.
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [devel] ldd: почему?
2006-09-28 8:49 [devel] ldd: почему? Ildar Mulyukov
2006-09-28 8:57 ` Damir Shayhutdinov
@ 2006-09-28 10:01 ` Sergey Vlasov
2006-09-28 11:21 ` Sergey V Turchin
1 sibling, 1 reply; 9+ messages in thread
From: Sergey Vlasov @ 2006-09-28 10:01 UTC (permalink / raw)
To: ALT Devel discussion list
[-- Attachment #1: Type: text/plain, Size: 661 bytes --]
On Thu, Sep 28, 2006 at 02:49:57PM +0600, Ildar Mulyukov wrote:
> Упаковывая libgnomedb, столкнулся с такой ситуацией: (вендор думал и
> сделал) libgnomedb_entry_builtin_plugins_la_LIBADD = -lssl. Линковка
> прошла успешно. Но verify-elf не дремал и заругался: undefined
> reference.
>
> Оказалось, что недостающие символы предоставляются -lcrypto, но они
> присутствовали в -lssl, т.к. он _использует_ эти символы (из crypto).
>
> Вопрос: почему наш binutils позволяет собирать такие случаи?
Традиционно ld допускает наличие неопределённых символов в разделяемых
библиотеках - чтобы они ловились сразу, нужно писать -Wl,--no-undefined.
[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [devel] ldd: почему?
2006-09-28 10:01 ` Sergey Vlasov
@ 2006-09-28 11:21 ` Sergey V Turchin
2006-09-28 11:43 ` Sergey Vlasov
0 siblings, 1 reply; 9+ messages in thread
From: Sergey V Turchin @ 2006-09-28 11:21 UTC (permalink / raw)
To: ALT Devel discussion list
[-- Attachment #1: Type: text/plain, Size: 497 bytes --]
On Thursday 28 September 2006 14:01, Sergey Vlasov wrote:
[...]
> Традиционно ld допускает наличие неопределённых символов в
> разделяемых библиотеках
Разве? У меня всегда ругался. А в KDE везде, где линкуется с либами
из /usr/lib/kde3 стоит -Wl,--allow-shlib-undefined
Может и там линкуется с этой опцией?
> - чтобы они ловились сразу, нужно писать -Wl,--no-undefined.
--
Regards, Sergey, ALT Linux Team, http://www.altlinux.ru
http://stinkfoot.org:11371/pks/lookup?op=get&search=0x1C2A3F08
[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [devel] ldd: почему?
2006-09-28 11:21 ` Sergey V Turchin
@ 2006-09-28 11:43 ` Sergey Vlasov
2006-09-28 12:15 ` Sergey Vlasov
0 siblings, 1 reply; 9+ messages in thread
From: Sergey Vlasov @ 2006-09-28 11:43 UTC (permalink / raw)
To: ALT Devel discussion list
[-- Attachment #1: Type: text/plain, Size: 713 bytes --]
On Thu, Sep 28, 2006 at 03:21:12PM +0400, Sergey V Turchin wrote:
> On Thursday 28 September 2006 14:01, Sergey Vlasov wrote:
>
> [...]
> > Традиционно ld допускает наличие неопределённых символов в
> > разделяемых библиотеках
> Разве? У меня всегда ругался. А в KDE везде, где линкуется с либами
> из /usr/lib/kde3 стоит -Wl,--allow-shlib-undefined
> Может и там линкуется с этой опцией?
Эту опцию можно спокойно игнорировать, поскольку
--allow-shlib-undefined
--no-allow-shlib-undefined
Allows (the default) or disallows undefined symbols in shared
libraries. ...
Хотя, вероятно, в разных ld значение этой опции по умолчанию может
различаться.
[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [devel] ldd: почему?
2006-09-28 11:43 ` Sergey Vlasov
@ 2006-09-28 12:15 ` Sergey Vlasov
0 siblings, 0 replies; 9+ messages in thread
From: Sergey Vlasov @ 2006-09-28 12:15 UTC (permalink / raw)
To: ALT Devel discussion list
[-- Attachment #1: Type: text/plain, Size: 920 bytes --]
On Thu, Sep 28, 2006 at 03:43:55PM +0400, Sergey Vlasov wrote:
> On Thu, Sep 28, 2006 at 03:21:12PM +0400, Sergey V Turchin wrote:
> > On Thursday 28 September 2006 14:01, Sergey Vlasov wrote:
> >
> > [...]
> > > Традиционно ld допускает наличие неопределённых символов в
> > > разделяемых библиотеках
> > Разве? У меня всегда ругался. А в KDE везде, где линкуется с либами
> > из /usr/lib/kde3 стоит -Wl,--allow-shlib-undefined
> > Может и там линкуется с этой опцией?
>
> Эту опцию можно спокойно игнорировать, поскольку
>
> --allow-shlib-undefined
> --no-allow-shlib-undefined
> Allows (the default) or disallows undefined symbols in shared
> libraries. ...
>
> Хотя, вероятно, в разных ld значение этой опции по умолчанию может
> различаться.
И, похоже, поведение нашего ld (даже с явным --no-as-needed) этой
документации уже не соответствует.
[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [devel] ldd: почему?
2006-09-28 8:57 ` Damir Shayhutdinov
@ 2006-09-29 4:52 ` Ildar Mulyukov
2006-09-29 5:39 ` Damir Shayhutdinov
0 siblings, 1 reply; 9+ messages in thread
From: Ildar Mulyukov @ 2006-09-29 4:52 UTC (permalink / raw)
To: devel
On 28.09.2006 14:57:35, Damir Shayhutdinov wrote:
> > Оказалось, что недостающие символы предоставляются -lcrypto, но они
> > присутствовали в -lssl, т.к. он _использует_ эти символы (из
> > crypto).
> > Вопрос: почему наш binutils позволяет собирать такие случаи?
> Потому что --as-needed.
> Со статической сборкой было бы то же самое.
Знаете, я не первый раз встречаюсь с упоминаемой близостью
динамических--as-needed и статических библиотек. И мне такое сравнение
не нравится. Всё-таки динамические (даже если с --as-needed) остаются
динамическими. И пожелание к ним такое: чтобы они декларировали
используемые библиотеки. Хотя, конечно, такое пожелание не всегда легко
выполнимо.
Хорошо, что у нас есть verify-elf, и он не дремлет!
> Указывайте все библиотеки, символы которых используются в вашей
> библиотеке, в строке линковки и у вас не будет проблем ни со
> статической сборкой, ни с --as-needed.
Чур меня от статических библиотек. :)
С уважением, Ильдар.
--
Ildar Mulyukov,
free SW designer/programmer/packager
=========================================
email: ildar@altlinux.ru
ALT Linux Sisyphus http://www.sisyphus.ru
=========================================
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [devel] ldd: почему?
2006-09-29 4:52 ` Ildar Mulyukov
@ 2006-09-29 5:39 ` Damir Shayhutdinov
2006-09-29 10:08 ` Ildar Mulyukov
0 siblings, 1 reply; 9+ messages in thread
From: Damir Shayhutdinov @ 2006-09-29 5:39 UTC (permalink / raw)
To: ALT Devel discussion list
> > Потому что --as-needed.
> > Со статической сборкой было бы то же самое.
> Знаете, я не первый раз встречаюсь с упоминаемой близостью
> динамических--as-needed и статических библиотек. И мне такое сравнение
> не нравится. Всё-таки динамические (даже если с --as-needed) остаются
> динамическими. И пожелание к ним такое: чтобы они декларировали
> используемые библиотеки. Хотя, конечно, такое пожелание не всегда легко
> выполнимо.
Объясняю:
Допустим, что библиотека A использует библиотеку B.
Тогда, если вы собираете библиотеку С, которая использует символы из
библиотек A и B, то без --as-needed вам было достаточно прилинковывать
только библиотеку A, а библиотека B "вытягивалась" неявно. С
--as-needed вам надо прилинковывать обе библиотеки, и это правильно.
Вы ведь используете символы из обеих библиотек.
Если бы вы использовали символы только из A, то и прилинковывать надо
было только библиотеку A. В случае --no-as-needed к результирующей
библиотеке оказалась бы напрямую слинкована библиотека B. В случае
--as-needed этого бы не произошло.
>
> Хорошо, что у нас есть verify-elf, и он не дремлет!
Если вас волнуют предупреждение именно на этапе сборки, то можно
добавить -Wl,--no-allow-shlib-undefined в LDFLAGS (но это не панацея,
потому что некоторые кривые библиотеки должны быть недолинкованы).
> > Указывайте все библиотеки, символы которых используются в вашей
> > библиотеке, в строке линковки и у вас не будет проблем ни со
> > статической сборкой, ни с --as-needed.
> Чур меня от статических библиотек. :)
Это аргумент для апстримов.
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [devel] ldd: почему?
2006-09-29 5:39 ` Damir Shayhutdinov
@ 2006-09-29 10:08 ` Ildar Mulyukov
0 siblings, 0 replies; 9+ messages in thread
From: Ildar Mulyukov @ 2006-09-29 10:08 UTC (permalink / raw)
To: devel
On 29.09.2006 11:39:44, Damir Shayhutdinov wrote:
> Объясняю:
> Допустим, что библиотека A использует библиотеку B.
> Тогда, если вы собираете библиотеку С, которая использует символы из
> библиотек A и B, то без --as-needed вам было достаточно прилинковывать
> только библиотеку A, а библиотека B "вытягивалась" неявно. С
> --as-needed вам надо прилинковывать обе библиотеки, и это правильно.
> Вы ведь используете символы из обеих библиотек.
> Если бы вы использовали символы только из A, то и прилинковывать надо
> было только библиотеку A. В случае --no-as-needed к результирующей
> библиотеке оказалась бы напрямую слинкована библиотека B. В случае
> --as-needed этого бы не произошло.
А-а-а-а-а-а! Теперь понял! :) Спасибо!
Ильдар
--
Ildar Mulyukov,
free SW designer/programmer/packager
=========================================
email: ildar@altlinux.ru
ALT Linux Sisyphus http://www.sisyphus.ru
=========================================
^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2006-09-29 10:08 UTC | newest]
Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2006-09-28 8:49 [devel] ldd: почему? Ildar Mulyukov
2006-09-28 8:57 ` Damir Shayhutdinov
2006-09-29 4:52 ` Ildar Mulyukov
2006-09-29 5:39 ` Damir Shayhutdinov
2006-09-29 10:08 ` Ildar Mulyukov
2006-09-28 10:01 ` Sergey Vlasov
2006-09-28 11:21 ` Sergey V Turchin
2006-09-28 11:43 ` Sergey Vlasov
2006-09-28 12:15 ` Sergey Vlasov
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