metaclass: (Default)
[personal profile] metaclass
А вот скажите мне, как в линуксе ищутся shared object, то бишь библиотеки?
Не могу понять, как получается, что там где я собрал Qt креатором проект, он работает, а на другом дебиане - нет. Пишет, что не может загрузить libQtSql.so.4

ldd выдает отличающиется списки используемых либ:

libQtSql.so.4 => not found
libQtGui.so.4 => not found
libQtNetwork.so.4 => not found
libQtCore.so.4 => not found


libQtSql.so.4 => /home/user/qtsdk-2009.02/qt/lib/libQtSql.so.4 (0xb7ebe000)
libQtGui.so.4 => /home/user/qtsdk-2009.02/qt/lib/libQtGui.so.4 (0xb74a4000)
libQtNetwork.so.4 => /home/user/qtsdk-2009.02/qt/lib/libQtNetwork.so.4 (0xb7178000)
libQtCore.so.4 => /home/user/qtsdk-2009.02/qt/lib/libQtCore.so.4 (0xb6f25000)

По аналогии с вендой - скопировал нужные либы в папку к проге - фиг, все равно не видит :)


Установка qt либ из репозитория не помогла - ldd теперь их видит, но прога не работает - версия либ (4.2) раньше той на которой я прогу собирал (4.5)

В натуре придется LD_LIBRARY_PATH править, хотя везде написано что это антигуманно. Или еще как-нибудь заставлять лоадер либы рядом с приложением искать.

А вот если я захочу вместо Qt4.2 поставить Qt4.5, сломается что нибудь в системе или нет? И как это сделать, не поломав голову менеджеру пакетов?

Date: 2009-05-09 02:58 am (UTC)
From: [identity profile] max-posedon.livejournal.com
LD_LIBRARY_PATH=. (умолчание в windows), это пиздец и антигуманно, посмотрите на msvc-шный runtime, для его такое отключили, и не просто так.

Date: 2009-05-09 06:16 am (UTC)
From: [identity profile] metaclass.livejournal.com
Пиздец - это отсутствие такой функции.
Почему микрософт пошел по тому же пути - вопрос достаточно сложный, помнится мне, ВСЕ пользователи Firebird в гугл-группе попросили разработчиков отломать нахер это от embedded engine, который часто используется в таком же стиле, как я хотел запустить эту прогу, т.н. xcopy deployment.
Впрочем, на эту тему тут уже неоднократно, кажется, спорили. Похоже, никто не понимает, зачем писать программы, изолированные и запускающиеся независимо от основной системы, т.к. редко сталкиваются с деплойментом прог в реальных условиях.

Date: 2009-05-09 07:25 am (UTC)
From: [identity profile] blacklion.livejournal.com
Пиздец - это отсутствие такой функции.
Ну, и явной точки нету в PATH тоже. Это гибче — добавь system-wide LD_LIBRARY_PATH=. и будет как в винде. А теперь сделай в винде наоборот :)

Date: 2009-05-09 07:26 am (UTC)
From: [identity profile] blacklion.livejournal.com
А ещё негуманно что у винды PATH и LD_LIBRARY_PATH — одно и то же. В результате от сортировки PATH зависит где возмётся библиотека.

Date: 2009-05-09 07:27 am (UTC)
From: [identity profile] blacklion.livejournal.com
Похоже, никто не понимает, зачем писать программы, изолированные и запускающиеся независимо от основной системы, т.к. редко сталкиваются с деплойментом прог в реальных условиях.
Понимаешь, эта задача в *IX решается шелл-скриптом на 10 строк. А вот в винде ничего ты изменить не можешь — как есть так и есть.

Profile

metaclass: (Default)
metaclass

April 2017

S M T W T F S
      1
2345678
9101112 131415
16171819202122
23242526272829
30      

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Sep. 20th, 2025 01:17 pm
Powered by Dreamwidth Studios