ALT Linux Team development discussions
 help / color / mirror / Atom feed
* [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