[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