Re: qCAD
On 2007.04.24 at 09:15:36 +0300, Fedir Gontsa wrote:
> Привет Уважаемые!
> Срочно спешу с вопросом. Пропала возможность печатать (документ на печать отсылаеться) из QCAD (того что в Debian Etch). Из других Qt приложений (Scribus) печать есть (XFCE если что :))
> при запуске на печать выдает
> libcups.so: cannot open shared object file: No such file or directory
> Эти файлы печатались из QCAD не один раз.
> Посоветуйте что делать?
Поставить пакет libcupsys2-dev.
Правда, выглядит похоже на "постучать в бубен?"
Объясняю популярно в чем дело:
В Debian динамические библиотеки никогда не имеют имена, кончающиеся
на .so. Они всегда называются lib<что-то-там>.so.<номер версии>.
А вот в -dev пакетах, для того чтобы компоновщик при сборке библиотеку
нашел, поставляются симлинки вида lib<something>.so, указывающие на
lib<something>.so.X.
Если библиотека прилинкована в программе на этапе сборки, то всё в
порядке. Найдя библиотеку по симлинке компоновщик пропишет в
соответствующую секцию исполняемого файла правильное имя с номером
версии.
Но некоторые программы открывают библиотеки самостоятельно во время
выполнения, используя функцию dlopen. И вот она-то ничего не знает о
том, что там сзади номер версии должен быть. Ей сказали
dlopen("libcupsys.so") она и ищет файл libcupsys.so, а такого нет - есть
libcupsys.so.2. Мейнтейнер пакета может этого и не заметить - у него-то,
на машине где он тестируется, соответствующий dev-пакет стоит.
Поэтому надо запостить багу на пакет qcad (если моя гипотеза
подтвердится и при наличии libcupsys2-dev всё будет работать),
предложив мейнтейнеру поправить имя библиотеки в вызове dlopen.
Reply to:
- Follow-Ups:
- Re: qCAD
- From: Fedir Gontsa <gontsa@uch.net>
- References:
- qCAD
- From: Fedir Gontsa <gontsa@uch.net>