[Comm] ЦЕРНовская графика ROOT, Desktop 4.0 и экскурсия в Ubuntu 7.10

=?iso-8859-1?q?panov_=CE=C1_dec1=2Esinp=2Emsu=2Eru?= =?iso-8859-1?q?panov_=CE=C1_dec1=2Esinp=2Emsu=2Eru?=
Ср Мар 26 23:35:40 MSK 2008



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 (я чайник) и как 
это сделать?

Александр


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