On Tue, Oct 21, 2008 at 05:46:42PM +0400, Sergey Vlasov wrote: > On Tue, Oct 21, 2008 at 03:17:22PM +0300, Kirill A. Shutemov wrote: > > Споткнулся на странной проблеме. При линковке, к примеру, libcrypt.so > > получаю кучу сообoщений об ошибке следующего вида: > > > > /usr/lib/gcc/arm-alt-linux-gnueabi/4.3.2/libgcc.a(_udivsi3.o): In function > > `__aeabi_uidiv': > > /usr/src/RPM/BUILD/gcc-4.3.2-20081008/obj-arm-alt-linux-gnueabi/arm-alt-linux-gnueabi/libgcc/../../../libgcc/../gcc/config/arm/lib1funcs.asm:810: > > multiple definition of `__udivsi3' > > /usr/lib/gcc/arm-alt-linux-gnueabi/4.3.2/libgcc.a(_udivsi3.o):/usr/src/RPM/BUILD/gcc-4.3.2-20081008/obj-arm-alt-linux-gnueabi/arm-alt-linux-gnueabi/libgcc/../../../libgcc/../gcc/config/arm/lib1funcs.asm:810: > > first defined here > > > > Т.е. что-то типа конфликта libgcc.a с libgcc.a %-( > > > > Линковка происходит командой вида: > > gcc -shared -static-libgcc -Wl,-O1 -Wl,-z,defs -Wl,-dynamic-linker=/lib/ld-linux.so.3 -B/usr/src/RPM/BUILD/glibc-2.8.90-alt1/build-arm-linux/csu/ -Wl,--version-script=/usr/src/RPM/BUILD/glibc-2.8.90-alt1/build-arm-linux/libcrypt.map -Wl,-soname=libcrypt.so.1 -Wl,-z,combreloc -Wl,-z,relro -Wl,--hash-style=both -e __libc_main -L/usr/src/RPM/BUILD/glibc-2.8.90-alt1/build-arm-linux -L/usr/src/RPM/BUILD/glibc-2.8.90-alt1/build-arm-linux/math -L/usr/src/RPM/BUILD/glibc-2.8.90-alt1/build-arm-linux/elf -L/usr/src/RPM/BUILD/glibc-2.8.90-alt1/build-arm-linux/dlfcn -L/usr/src/RPM/BUILD/glibc-2.8.90-alt1/build-arm-linux/nss -L/usr/src/RPM/BUILD/glibc-2.8.90-alt1/build-arm-linux/nis -L/usr/src/RPM/BUILD/glibc-2.8.90-alt1/build-arm-linux/rt -L/usr/src/RPM/BUILD/glibc-2.8.90-alt1/build-arm-linux/resolv -L/usr/src/RPM/BUILD/glibc-2.8.90-alt1/build-arm-linux/crypt -L/usr/src/RPM/BUILD/glibc-2.8.90-alt1/build-arm-linux/nptl -Wl,-rpath-link=/usr/src/RPM/BUILD/glibc-2.8.90-alt1/build-arm-linux:/usr/src/RPM/BUILD/glibc-2.8.90-alt1/build-arm-linux/math:/usr/src/RPM/BUILD/glibc-2.8.90-alt1/build-arm-linux/elf:/usr/src/RPM/BUILD/glibc-2.8.90-alt1/build-arm-linux/dlfcn:/usr/src/RPM/BUILD/glibc-2.8.90-alt1/build-arm-linux/nss:/usr/src/RPM/BUILD/glibc-2.8.90-alt1/build-arm-linux/nis:/usr/src/RPM/BUILD/glibc-2.8.90-alt1/build-arm-linux/rt:/usr/src/RPM/BUILD/glibc-2.8.90-alt1/build-arm-linux/resolv:/usr/src/RPM/BUILD/glibc-2.8.90-alt1/build-arm-linux/crypt:/usr/src/RPM/BUILD/glibc-2.8.90-alt1/build-arm-linux/nptl -o /usr/src/RPM/BUILD/glibc-2.8.90-alt1/build-arm-linux/crypt/libcrypt.so -T /usr/src/RPM/BUILD/glibc-2.8.90-alt1/build-arm-linux/shlib.lds /usr/src/RPM/BUILD/glibc-2.8.90-alt1/build-arm-linux/csu/abi-note.o -Wl,--whole-archive /usr/src/RPM/BUILD/glibc-2.8.90-alt1/build-arm-linux/crypt/libcrypt_pic.a /usr/src/RPM/BUILD/glibc-2.8.90-alt1/build-arm-linux/elf/interp.os /usr/src/RPM/BUILD/glibc-2.8.90-alt1/build-arm-linux/libc.so /usr/src/RPM/BUILD/glibc-2.8.90-alt1/build-arm-linux/libc_nonshared.a > > > > Я не знаю, зачем нужен -Wl,--whole-archive, но если его удалить -- помогает. > > Нужен для libcrypt_pic.a - там таким странным образом собирают библиотеки > (добавляют файлы в .a частями, а потом из них собирают .so - видимо, чтобы > не наступить на ограничение размера командной строки при сборке libc.so из > большого количества мелких файлов). По идее после libcrypt_pic.a должно > быть -Wl,--no-whole-archive, чтобы остальное линковалось обычным образом. Спасибо. Уже разобрался. Была ARM-специфичная проблема с configure. -- Regards, Kirill A. Shutemov + Belarus, Minsk + ALT Linux Team, http://www.altlinux.com/