Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Unix-системы [игнор отключен] [закрыт для гостей] / Невозможно загрузить libcrypt.so / 19 сообщений из 19, страница 1 из 1
24.07.2006, 17:16:00
    #33874640
Zmeishe
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Невозможно загрузить libcrypt.so
Создал приложение в Kylix 3
При подключении к базе данных в режиме дизайна про эту библиотеку ничего не спрашивает - типа находит.
В run-time говорит не могу её загрузить. Чего не хватает?

RH7.3
пути прописал и в .bash_profile и даже в ld.so.conf
всё равно говорит не могу.
...
Рейтинг: 0 / 0
24.07.2006, 22:03:46
    #33875178
g613
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Невозможно загрузить libcrypt.so
ZmeisheСоздал приложение в Kylix 3
При подключении к базе данных в режиме дизайна про эту библиотеку ничего не спрашивает - типа находит.
В run-time говорит не могу её загрузить. Чего не хватает?

RH7.3
пути прописал и в .bash_profile и даже в ld.so.conf
всё равно говорит не могу.
как именно прописал ? ldconfig потом говорил ?
...
Рейтинг: 0 / 0
25.07.2006, 09:05:03
    #33875497
Zmeishe
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Невозможно загрузить libcrypt.so
Поскольку libcrypt.so нашёл в двух каталогах - прописал оба.
/usr/i386-glibc21-linux/lib
/lib

Затем запустил
/sbin/lbconfig

Ещё пробовал следующее.

/lib/libcrypt.so это ссылка на /lib/libcrypt-2.2.5.so
/usr/i386-glibc21-linux/lib/libcrypt.so это ссылка /usr/i386-glibc21-linux/lib/libcrypt.so.1, а она в свою очередь на /usr/i386-glibc21-linux/lib/libcrypt-2.1.3.so

Я поочерёдно копировал libcrypt-2.1.3.so и libcrypt-2.2.5.so в каталог с программой и переименовывал в libcrypt.so. Всё равно пишет не могу загрузить.
...
Рейтинг: 0 / 0
25.07.2006, 09:43:33
    #33875558
g613
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Невозможно загрузить libcrypt.so
ZmeisheПоскольку libcrypt.so нашёл в двух каталогах - прописал оба.
/usr/i386-glibc21-linux/lib
/lib

Затем запустил
/sbin/lbconfig

Ещё пробовал следующее.

/lib/libcrypt.so это ссылка на /lib/libcrypt-2.2.5.so
/usr/i386-glibc21-linux/lib/libcrypt.so это ссылка /usr/i386-glibc21-linux/lib/libcrypt.so.1, а она в свою очередь на /usr/i386-glibc21-linux/lib/libcrypt-2.1.3.so

Я поочерёдно копировал libcrypt-2.1.3.so и libcrypt-2.2.5.so в каталог с программой и переименовывал в libcrypt.so. Всё равно пишет не могу загрузить.
ругается то как ? и вообще ldd на твой бинарь чего говорит ?
...
Рейтинг: 0 / 0
25.07.2006, 09:52:38
    #33875594
Zmeishe
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Невозможно загрузить libcrypt.so
Ругается драйвер к базе данных. Выдаёт окно типа MessageDlg
Пишет "Невозможно загрузить DLL: libcrypt.so"
DLL - потому, что он и для Win работает тоже.
...
Рейтинг: 0 / 0
25.07.2006, 09:54:47
    #33875605
v6y
v6y
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Невозможно загрузить libcrypt.so
Zmeishe
Ругается драйвер к базе данных. Выдаёт окно типа MessageDlg
Пишет "Невозможно загрузить DLL: libcrypt.so"
DLL - потому, что он и для Win работает тоже.


Может эта библиотека из какой киликсовской билиотеки грузится (dlopen-ом)? Попробуй запустить что-то типа:

env LD_LIBRARY_PATH=/lib:/путь_к_киликсу/bin:/путь_к_киликсу/lib путь_к_программе

Еще можно strace-ом посмотреть из какого места та или иная библиотека грузится

Про ldd тебе уже сказали
...
Рейтинг: 0 / 0
25.07.2006, 13:12:43
    #33876526
Zmeishe
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Невозможно загрузить libcrypt.so
ldd -v MyProg
Показывает кучу библиотек (so) и пути к ним.
В этой куче libcrypt.so отсутствует.
Это может быть зацепкой к решению проблемы?
...
Рейтинг: 0 / 0
25.07.2006, 13:40:28
    #33876660
v6y
v6y
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Невозможно загрузить libcrypt.so
Zmeisheldd -v MyProg
Показывает кучу библиотек (so) и пути к ним.
В этой куче libcrypt.so отсутствует.
Это может быть зацепкой к решению проблемы?
strace попробуй:
Код: plaintext
1.
strace  /полный/путь/к_твоей_программе  2 > /tmp/err.txt
По завершении программы посмотри файл /tmp/err.txt и поищи там строки, содержащие lybcrypt.so, например:

...
open("../lib/mmx/cmov/libcrypt.so.1", O_RDONLY) = -1 ENOENT (No such file or directory)
open("../lib/mmx/libcrypt.so.1", O_RDONLY) = -1 ENOENT (No such file or directory)
open("../lib/cmov/libcrypt.so.1", O_RDONLY) = -1 ENOENT (No such file or directory)
open("../lib/libcrypt.so.1", O_RDONLY) = -1 ENOENT (No such file or directory)
...
open("/lib/tls/libcrypt.so.1", O_RDONLY) = 3

То есть в данном случае видно в каких местах искалась lybcrypt.so и в каком месте она была найдена
...
Рейтинг: 0 / 0
25.07.2006, 14:08:39
    #33876794
Zmeishe
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Невозможно загрузить libcrypt.so
поиск по /tmp/err.txt сообщил
"Искомая строка не найдена".
Типа нету обращений к libcrypt.so

Возникло предложение - может быть включить эту библиотеку в проект Kylix и откомпилить вместе с ней?
...
Рейтинг: 0 / 0
25.07.2006, 14:19:23
    #33876842
Zmeishe
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Невозможно загрузить libcrypt.so
Не помогло.
И в этом случае strace не показал её наличие.
...
Рейтинг: 0 / 0
25.07.2006, 15:03:30
    #33877028
v6y
v6y
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Невозможно загрузить libcrypt.so
ZmeisheНе помогло.
И в этом случае strace не показал её наличие.
Ну тогда последняя попытка: попробуй

strace -ff -o /tmp/err программа

Посмотри, нет ли в /tmp файлов типа err.цифры и если есть, попробуй поискать там.
...
Рейтинг: 0 / 0
25.07.2006, 15:24:23
    #33877131
Zmeishe
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Невозможно загрузить libcrypt.so
Там получился только /tmp/err без цифр.
про libcrypt.so в нём ни слова.
...
Рейтинг: 0 / 0
25.07.2006, 23:11:44
    #33878151
g613
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Невозможно загрузить libcrypt.so
ZmeisheТам получился только /tmp/err без цифр.
про libcrypt.so в нём ни слова.
так не бывает. последняя строка в страсе логе какая ? в смысле там ничего внешнего не запускается ? и вообще твое окно юзерская программа выкидывает, которая судя по всему запускает чтото внешнее и именно это что то обламывается и отдает твоей программе ту самую запись которую твоя программа благополучно и пишет в красивом диалоговом окне...
...
Рейтинг: 0 / 0
26.07.2006, 09:34:59
    #33878484
Zmeishe
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Невозможно загрузить libcrypt.so
Я сваял тестовую программку из одной строчки
dlopen("libcrypt.so", RTLD_GLOBAL);

Получил сообщение
libcrypt.so: invalid mode for dlopen(); invalid argument


Мне тут подсказали, что проблема Linux для функции dlopen(); не редкая для разных so, не обязательно libcrypt.
Т.е. надо в Linux что-то настроить правильно.
...
Рейтинг: 0 / 0
26.07.2006, 10:23:50
    #33878572
v6y
v6y
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Невозможно загрузить libcrypt.so
ZmeisheЯ сваял тестовую программку из одной строчки
dlopen("libcrypt.so", RTLD_GLOBAL);

Получил сообщение
libcrypt.so: invalid mode for dlopen(); invalid argument


Мне тут подсказали, что проблема Linux для функции dlopen(); не редкая для разных so, не обязательно libcrypt.
Т.е. надо в Linux что-то настроить правильно.
Выписка из man dlopen

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
The  value  of flag can be either RTLD_LAZY or RTLD_NOW.  When RTLD_NOW is specified,
       or the environment variable LD_BIND_NOW is set to a non-empty string,  all  undefined
       symbols  in the library are resolved before dlopen() returns. If this cannot be done,
       an error is returned.  Otherwise binding is lazy: symbol values  are  first  resolved
       when needed.

       Optionally,  RTLD_GLOBAL  may  be  or'ed  into flag, in which case the external symbols
       defined in the library will be made available for symbol resolution  of  subsequently
       loaded libraries.  (The converse of RTLD_GLOBAL is RTLD_LOCAL.  This is the default.)

То есть такое - dlopen("libcrypt.so", RTLD_GLOBAL) - использование некоректно и RTLD_GLOBAL используется одним из нижеследующих способов:
1) dlopen("libcrypt.so", RTLD_LAZY | RTLD_GLOBAL)
2) dlopen("libcrypt.so", RTLD_NOW | RTLD_GLOBAL)
...
Рейтинг: 0 / 0
26.07.2006, 10:52:40
    #33878658
Zmeishe
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Невозможно загрузить libcrypt.so
dlopen("libcrypt.so", RTLD_LAZY | RTLD_GLOBAL)

SIGSEGV(11)

exception class EAccessViolation

'Access violation at address 0813600B, accessing address 00200000'

dlopen("libcrypt.so", RTLD_NOW | RTLD_GLOBAL)

Тоже самое ругательство.
...
Рейтинг: 0 / 0
26.07.2006, 10:57:53
    #33878684
v6y
v6y
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Невозможно загрузить libcrypt.so
Zmeishedlopen("libcrypt.so", RTLD_LAZY | RTLD_GLOBAL)

SIGSEGV(11)

exception class EAccessViolation

'Access violation at address 0813600B, accessing address 00200000'

dlopen("libcrypt.so", RTLD_NOW | RTLD_GLOBAL)

Тоже самое ругательство.

Полностью код теста приведи ради интереса.
...
Рейтинг: 0 / 0
26.07.2006, 11:25:59
    #33878795
Zmeishe
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Невозможно загрузить libcrypt.so
Это в Kylix.
Я просто проверяю как система реагирует на вызов этой функции. И не более того.

Суть проблемы в том, что Kylix в дизайне коннектится к базе без проблем,
а приложение в run-time получает exception с сообщением о невозможности загрузить эту библиотеку.
Этим куском кода, я сам себе ответил на вопрос, что библиотеку он находит по указанным путям в profile или ld.so.conf, даже если я обращаюсь просто по имени (без указания пути). Указав в dlopen бессмысленный набор символов - получил сообщение - файл не найден.

Вывод - с путями в системе Ok.

Почему её не может загрузить драйвер БД в run-time это ХЗ.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
#include <clx.h>
#include <dlfcn.h>

#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.xfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)
{
 void *handle;
 char *error;

 handle = dlopen("libcrypt.so", RTLD_LAZY | RTLD_GLOBAL);

 if(!handle)
 error = dlerror();

 if(error != NULL)
  MessageDlg(error, mtError, TMsgDlgButtons() << mbOk,  0 );

 error = dlerror();
 if(error != NULL)
  MessageDlg(error, mtError, TMsgDlgButtons() << mbOk,  0 );
}
//--------------------------------------------------------------------------- 
...
Рейтинг: 0 / 0
26.07.2006, 11:36:31
    #33878840
Zmeishe
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Невозможно загрузить libcrypt.so
Упс. Мелкая промашка. Я дебаггером прошёлся.

SIGSEGV(11)

exception class EAccessViolation

'Access violation at address 0813600B, accessing address 00200000'

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
Это вылетает после

if(!handle)
 error = dlerror();

 if(error != NULL)
  MessageDlg(error, mtError, TMsgDlgButtons() << mbOk,  0 );

надо в начале 
handle = NULL; error = NULL;
затем 
 handle = dlopen("libcrypt.so", RTLD_LAZY | RTLD_GLOBAL);

if(handle == NULL)
 error = dlerror();

 if(error != NULL)
  MessageDlg(error, mtError, TMsgDlgButtons() << mbOk,  0 );
При таком раскладе всё в порядке.

Тогда вывод такой - разработчики драйвера БД накосячили.
...
Рейтинг: 0 / 0
Форумы / Unix-системы [игнор отключен] [закрыт для гостей] / Невозможно загрузить libcrypt.so / 19 сообщений из 19, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]