[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: