[devel] glibc-2.8.90-alt1

Sergey Vlasov =?iso-8859-1?q?vsu_=CE=C1_altlinux=2Eru?=
Вт Окт 21 17:46:42 MSD 2008


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, чтобы остальное линковалось обычным образом.
----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя     : =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Тип     : application/pgp-signature
Размер  : 189 байтов
Описание: Digital signature
Url     : <http://lists.altlinux.org/pipermail/devel/attachments/20081021/a9a03c61/attachment.bin>


Подробная информация о списке рассылки Devel