On Tue, Oct 05, 2010 at 04:46:39PM +0800, REAL wrote: > Alexey Tourbin пишет: > >>>$ /usr/lib/rpm/lib.req /usr/lib64/libgsm.so.1 > >>>lib.req: WARNING: /usr/lib64/libgsm.so.1: overlinked libraries: > >>>/lib64/libm.so.6 > >>>lib.req: WARNING: /usr/lib64/libgsm.so.1: underlinked libraries: > >>>/lib64/libc.so.6 > >>>libm.so.6()(64bit) > >>>$ > >>А поподробнее? Что-то я не улавливаю > >>суть этой фичи. > > > >Желаете уловить?-) > > > >Есть требуемые библиотеки, зашитые в > >бинарике, на уровне DT_NEEDED. > >С другой стороны, есть набор библиотек, > >который получается вследствие > >загрузки бинарика средствами ld.so(8) и ldd(1). > >Во втором случае > >делается срез по используемым символа, > >weak-символы обрабатываются > >корректно. > > > >Так вот, набор "зашитых" и набор > >"фактически используемых" (по символам) > >библиотек может не совпадать. > >Диагностика строится на этом. > > Хорошо, но как это коррелируется с выше > процитированным? Что именно > подразумевается под "overlinked libraries" и > "underlinked libraries"? overlinked libraries означает, что ELF cлинкован с тем, с чем не должен. underlinked libraries означает, что ELF не cлинкован с тем, с чем должен. С первым мы уже давно боремся с помощью -Wl,--as-needed, поэтому наличие overlinked libraries, скорее всего, является следствием использования -Wl,--no-as-needed. Cо вторым мы тоже давно боремся с помощью "%set_verify_elf_method strict". -- ldv