On Tue, Oct 05, 2010 at 04:04:52PM +0300, Kirill A. Shutemov wrote: > On Tue, Oct 05, 2010 at 02:17:17PM +0400, Alexey Tourbin wrote: > > On Tue, Oct 05, 2010 at 02:01:03PM +0400, Dmitry V. Levin wrote: > > > overlinked libraries означает, что ELF cлинкован с тем, с чем не должен. > > > underlinked libraries означает, что ELF не cлинкован с тем, с чем должен. > > > > > > С первым мы уже давно боремся с помощью -Wl,--as-needed, поэтому наличие > > > overlinked libraries, скорее всего, является следствием использования > > > -Wl,--no-as-needed. > > > > > > Cо вторым мы тоже давно боремся с помощью "%set_verify_elf_method strict". > > > > C недолинковкой вопрос несколько сложнее: verify-elf/ldd не ругается > > на непрямые транзитивные зависимости (по символам), если они разрешаются > > при загрузке. В этом вся соль. И в этом одна из претензий к тулчейну! > > > > Я сейчас не могу придумать тривиальный пример, > > $ cat test.c > #include > > int main() > { > gdk_window_set_cursor(NULL, NULL); > return 0; > } > $ gcc `pkg-config --cflags gtk+-2.0` test.c -o test -lgdk-x11-2.0 > $ objdump -p test |grep NEEDED > NEEDED libgdk-x11-2.0.so.0 > NEEDED libc.so.6 > $ ldd test | wc -l > 41 > > Вы такое имеете ввиду? Нет, в этом примере всё в норме: $ /usr/lib/rpm/lib.req ./test /lib64/ld-linux-x86-64.so.2 rtld(GNU_HASH) libc.so.6(GLIBC_2.2.5)(64bit) lib.req: WARNING: libgdk-x11-2.0.so.0()(64bit) is not yet set-versioned libgdk-x11-2.0.so.0()(64bit) > > вот менее тривиальный > > пример: > > > > lib.req: WARNING: /usr/lib64/libwx_gtk2u_adv-2.8.so.0.7.0: underlinked libraries: /usr/lib64/libX11.so.6 > > lib.req: WARNING: /usr/lib64/libwx_gtk2u_core-2.8.so.0.7.0: underlinked libraries: /usr/lib64/libX11.so.6 > > > > Как так можно было слинковать? > > Проблемы в консерватории имеются. -- ldv