URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 3249
[ Назад ]

Исходное сообщение
"Помогите разобраться с подключаемыми библиотеками"

Отправлено Bakulenko , 05-Авг-04 14:59 
Написал CGI приложение на C для обращение к MySQL (4.0.12). Скомпилировал всё замечательно, без косяков. Но при выполнении сервер в логи пишет ошибку:  /usr/libexec/ld-elf.so.1: Shared object "libmysqlclient.so.10" not found
Я нашел эту библиатеку и забросил её в /usr/local/lib/
После чего ошибка исчезла, но появилась другая:
/usr/libexec/ld-elf.so.1: AHW_Scripts.cgi: Undefined symbol "mysql_connect"
В чём могут быть проблемы?

ОС  FreeBSD 4.4


Содержание

Сообщения в этом обсуждении
"Помогите разобраться с подключаемыми библиотеками"
Отправлено Vladislav Lazarenko , 05-Авг-04 17:01 
>Написал CGI приложение на C для обращение к MySQL (4.0.12). Скомпилировал всё
>замечательно, без косяков. Но при выполнении сервер в логи пишет ошибку:
> /usr/libexec/ld-elf.so.1: Shared object "libmysqlclient.so.10" not found
>Я нашел эту библиатеку и забросил её в /usr/local/lib/
>После чего ошибка исчезла, но появилась другая:
>/usr/libexec/ld-elf.so.1: AHW_Scripts.cgi: Undefined symbol "mysql_connect"
>В чём могут быть проблемы?
>
>ОС  FreeBSD 4.4

Не нужно никуда забрасывать эту библиотеку, просто установи mysql-devel пакет, все само попадет туда, куда нужно. Потом, если этого не произойдет при инсталляции, зарегестрируй .so-шки в системе, man ld. Обнови ld хэш.
Все должно пройти как по маслу.

удачи.


"Помогите разобраться с подключаемыми библиотеками"
Отправлено Bakulenko , 06-Авг-04 05:50 
>>Написал CGI приложение на C для обращение к MySQL (4.0.12). Скомпилировал всё
>>замечательно, без косяков. Но при выполнении сервер в логи пишет ошибку:
>> /usr/libexec/ld-elf.so.1: Shared object "libmysqlclient.so.10" not found
>>Я нашел эту библиатеку и забросил её в /usr/local/lib/
>>После чего ошибка исчезла, но появилась другая:
>>/usr/libexec/ld-elf.so.1: AHW_Scripts.cgi: Undefined symbol "mysql_connect"
>>В чём могут быть проблемы?
>>
>>ОС  FreeBSD 4.4
>
>Не нужно никуда забрасывать эту библиотеку, просто установи mysql-devel пакет, все само
>попадет туда, куда нужно. Потом, если этого не произойдет при инсталляции,
>зарегестрируй .so-шки в системе, man ld. Обнови ld хэш.
>Все должно пройти как по маслу.
>
>удачи.

Спасибо ,попробую. Хотя у меня этот скрипт уже работал, систему не переставлял, а всего лишь перегружал.


"Помогите разобраться с подключаемыми библиотеками"
Отправлено Bakulenko , 12-Авг-04 13:30 
Что то я не нашел под free bsd mysql-devel, он вообще в природе существует.
У меня в системе существует несколько экземпляров libmysqlclient.so.10.
Попробовал в опциях gcc указывать пути к этим so-шкам, но прога перестала линкером собираться, в то время как ошибка в логах сервера про неизвестный метод "mysql_connect" пропала.
У меня сложилось впечатление, что когда я компилил прогу с одними путями, линкер видел эту функцию, а когда вызывалась CGI-программа, то апач цеплял другую libmysqlclient.so.10, в которой этой функции нет.
Посоветуйте, какие действия еще можно предпринять?
Самое интересное, что эта cgi-ка уже работала, работы в этом направлении временно свернули, а после перезагрузки системы все перестало работать.

"Помогите разобраться с подключаемыми библиотеками"
Отправлено Bakulenko , 12-Авг-04 13:36 

>Попробовал в опциях gcc указывать пути к этим so-шкам, но прога перестала
>линкером собираться, в то время как ошибка в логах сервера про
>неизвестный метод "mysql_connect" пропала.
извиняюсь, мысль недовыразил: понятно, проги то нет, выполняться нечему
Стала появляться сообщение об отсутствии "mysql_connect" при линковании.



"Помогите разобраться с подключаемыми библиотеками"
Отправлено Brick , 15-Авг-04 12:13 
>
>>Попробовал в опциях gcc указывать пути к этим so-шкам, но прога перестала
>>линкером собираться, в то время как ошибка в логах сервера про
>>неизвестный метод "mysql_connect" пропала.
>извиняюсь, мысль недовыразил: понятно, проги то нет, выполняться нечему
>Стала появляться сообщение об отсутствии "mysql_connect" при линковании.
попробуй mysql_real_connect. Была такая же проблема, решил её только так.

MYSQL mysql;

// Устанавливаем постоянное соединение с MySQL
mysql_init(&mysql);
if(!mysql_real_connect(&mysql, SQL_HOST, SQL_USER, SQL_PASSWORD, SQL_DB, 0, NULL, 0))
{
   printf("Не удалось соедениться с базой данных. Ошибка: %s", mysql_error(&mysql));

   return -1;
}
//


"Помогите разобраться с подключаемыми библиотеками"
Отправлено Bakulenko , 16-Авг-04 04:59 
>>
>>>Попробовал в опциях gcc указывать пути к этим so-шкам, но прога перестала
>>>линкером собираться, в то время как ошибка в логах сервера про
>>>неизвестный метод "mysql_connect" пропала.
>>извиняюсь, мысль недовыразил: понятно, проги то нет, выполняться нечему
>>Стала появляться сообщение об отсутствии "mysql_connect" при линковании.
>попробуй mysql_real_connect. Была такая же проблема, решил её только так.
>
>MYSQL mysql;
>
>// Устанавливаем постоянное соединение с MySQL
>mysql_init(&mysql);
>if(!mysql_real_connect(&mysql, SQL_HOST, SQL_USER, SQL_PASSWORD, SQL_DB, 0, NULL, 0))
>{
>   printf("Не удалось соедениться с базой данных. Ошибка: %s", mysql_error(&mysql));
>
>
>   return -1;
>}
>//
Спасибо, я уже так и сделал. Все заработало. Глянул исходники mysql, а там условная компиляция на методе mysql_connect стоит и написано, что это типа старый вариант.
Просто интересно было почему не работает, ведь эта прога работала 3 месяца назад, до перегрузки системы.
Я грепом глянул несколько версий libmysqlclient.so.10 и она нашла mysql_connect в той, которая по указанным мной путям лежит, поэтому то и компилится, но когда прога исполнялась под апачем, брал он другую версию, в которой этой функции нет.


"Помогите разобраться с подключаемыми библиотеками"
Отправлено К.Годлевский , 30-Ноя-04 18:04 
>mysql_real_connect(&mysql, SQL_HOST, SQL_USER, SQL_PASSWORD, SQL_DB, 0, NULL, 0)

Спасибо! Весь день искал, где собака порылась.


"Помогите разобраться с подключаемыми библиотеками"
Отправлено chip , 15-Авг-04 21:36 
>Написал CGI приложение на C для обращение к MySQL (4.0.12). Скомпилировал всё
>замечательно, без косяков. Но при выполнении сервер в логи пишет ошибку:
> /usr/libexec/ld-elf.so.1: Shared object "libmysqlclient.so.10" not found
>Я нашел эту библиатеку и забросил её в /usr/local/lib/
>После чего ошибка исчезла, но появилась другая:
>/usr/libexec/ld-elf.so.1: AHW_Scripts.cgi: Undefined symbol "mysql_connect"
>В чём могут быть проблемы?
>
>ОС  FreeBSD 4.4

ldconfig -r | head -2
ldconfig -r | grep mysql
+ присутствует ли в /usr/local/etc/rc.d скрипт 000.mysql-client.sh и имеет ли он исполняемый бит ?


"Помогите разобраться с подключаемыми библиотеками"
Отправлено Bakulenko , 16-Авг-04 05:08 
>>Написал CGI приложение на C для обращение к MySQL (4.0.12). Скомпилировал всё
>>замечательно, без косяков. Но при выполнении сервер в логи пишет ошибку:
>> /usr/libexec/ld-elf.so.1: Shared object "libmysqlclient.so.10" not found
>>Я нашел эту библиатеку и забросил её в /usr/local/lib/
>>После чего ошибка исчезла, но появилась другая:
>>/usr/libexec/ld-elf.so.1: AHW_Scripts.cgi: Undefined symbol "mysql_connect"
>>В чём могут быть проблемы?
>>
>>ОС  FreeBSD 4.4
>
>ldconfig -r | head -2
>ldconfig -r | grep mysql
>+ присутствует ли в /usr/local/etc/rc.d скрипт 000.mysql-client.sh и имеет ли он исполняемый
>бит ?

/tmp/apache > ldconfig -r | head -2
/var/run/ld-elf.so.hints:
        search directories: /usr/lib/mysql:/usr/local/lib/mysql
/tmp/apache > cd /usr/local/lib/mysql
/usr/local/lib/mysql > grep mysql_connect *
Binary file libmysqlclient.a matches
Binary file libmysqlclient.so.10 matches
/usr/local/lib/mysql > ldconfig -r | grep mysql
        search directories: /usr/lib/mysql:/usr/local/lib/mysql
        0:-lmysqlclient.10 => /usr/lib/mysql/libmysqlclient.so.10
        1:-lmysqlclient.12 => /usr/lib/mysql/libmysqlclient.so.12
        2:-lmysqlclient.10 => /usr/local/lib/mysql/libmysqlclient.so.10
Как видно, mysql_connect в этих библиотеках присутствует, но подключается библиотека хрен пойми откуда.
Или grep mysql_connect *
Binary file libmysqlclient.a matches
Binary file libmysqlclient.so.10 matches
еще не говорит о том, что все будет вызываться?