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

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

RH7.3
пути прописал и в .bash_profile и даже в ld.so.conf
всё равно говорит не могу.
как именно прописал ? ldconfig потом говорил ?
...
Рейтинг: 0 / 0
Невозможно загрузить libcrypt.so
    #33875497
Фотография 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. Всё равно пишет не могу загрузить.
...
Рейтинг: 0 / 0
Невозможно загрузить libcrypt.so
    #33875558
g613
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Невозможно загрузить libcrypt.so
    #33875594
Фотография Zmeishe
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ругается драйвер к базе данных. Выдаёт окно типа MessageDlg
Пишет "Невозможно загрузить DLL: libcrypt.so"
DLL - потому, что он и для Win работает тоже.
...
Рейтинг: 0 / 0
Невозможно загрузить libcrypt.so
    #33875605
Фотография v6y
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Zmeishe
Ругается драйвер к базе данных. Выдаёт окно типа MessageDlg
Пишет "Невозможно загрузить DLL: libcrypt.so"
DLL - потому, что он и для Win работает тоже.


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

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

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

Про ldd тебе уже сказали
...
Рейтинг: 0 / 0
Невозможно загрузить libcrypt.so
    #33876526
Фотография Zmeishe
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ldd -v MyProg
Показывает кучу библиотек (so) и пути к ним.
В этой куче libcrypt.so отсутствует.
Это может быть зацепкой к решению проблемы?
...
Рейтинг: 0 / 0
Невозможно загрузить libcrypt.so
    #33876660
Фотография v6y
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Невозможно загрузить libcrypt.so
    #33876794
Фотография Zmeishe
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
поиск по /tmp/err.txt сообщил
"Искомая строка не найдена".
Типа нету обращений к libcrypt.so

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

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

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

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


Мне тут подсказали, что проблема Linux для функции dlopen(); не редкая для разных so, не обязательно libcrypt.
Т.е. надо в Linux что-то настроить правильно.
...
Рейтинг: 0 / 0
Невозможно загрузить libcrypt.so
    #33878572
Фотография v6y
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Невозможно загрузить libcrypt.so
    #33878658
Фотография Zmeishe
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Невозможно загрузить libcrypt.so
    #33878684
Фотография v6y
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Невозможно загрузить libcrypt.so
    #33878795
Фотография Zmeishe
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это в 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
Невозможно загрузить libcrypt.so
    #33878840
Фотография Zmeishe
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Упс. Мелкая промашка. Я дебаггером прошёлся.

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


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