On Wed, 26 Mar 2008, Damir Shayhutdinov wrote: >>> p> Похоже, что дело в какой-то неправильной настройке по умолчанию >> > p> компилятора >> > >> > Настройка правильная, это вам надо подправить кривую софтину, не умеющую >> > с --as-needed собираться. Как подправить - уже сказали. >> > >> >> Да нет, софтина не кривая - она же компилится без проблем и во всех >> предыдущих Alt начиная с Master 2.2, и в Ubuntu-7.10, где тоже gcc-4.1. >> Чем-то Desktop отличается от всего остального. > Изменились условия компиляции. Раньше для линковки с динамическими > библиотеками использовались другие правила, чем для линковки со > статическими библиотеками. Теперь (в 4.0 и выше), по умолчанию > линковка с динамическими библиотеками делается так же как и со > статическими. > > Софтина кривая в том смысле, что ее невозможно собрать со статическими > библиотеками любым компилятором (линковщиком), и с динамическими > библиотеками линковщиком из ALT Linux. > > Решения два: > 1) Исправить линковку (поставить -ldl после всех .o и .c файлов в > строке линковки). Это заодно вылечит статическую линковку. Вряд ли это получится. Там Makefile на 38KB и еще куча килобайтных Module.mk в каждой поддиректории проекта. > 2) Собрать линковщиком, который использует старые правила линковки. > Для этого надо либо использовать старые binutils, либо передать при > линковке флаг -Wl,--no-as-needed Я сделал так: export LDFLAGS="$LDFLAGS -Wl,--no-as-needed" Потом переконфигурировал дистрибутив (configure ....), но результат все тот-же: g++ -m32 -O2 -o bin/cint cint/main/cppmain.o \ -Llib -lCint -lm -ldl -rdynamic lib/libCint.so: undefined reference to `dlsym' lib/libCint.so: undefined reference to `dlerror' lib/libCint.so: undefined reference to `dlopen' lib/libCint.so: undefined reference to `dlclose' collect2: ld returned 1 exit status Что-то не так? Что значит использовать старые binutils (я чайник) и как это сделать? Александр