![]() |
Привет всем! В общем, у меня проблема в gcc под Asp Linux 7.3 и 9.0. Например, я делаю #include <mysql/mysql.h>, потом вызываю функцию mysql_connect(...) , либо какую-нибуль иную. Компиляю файл, проходит нормально. А вот сборка не завершается успехом и выдается сообщение типа "Undefined reference to mysql_connect". Это же происходит и с glut'ом, SDL'ем и даже в хедерах с++(stream.h, iostream.h).
Если кто знает, что делать с этою проблемой, помогите! |
Хорошо-бы последние строчки лога посотреть :)
|
Подключения одних хедеров недостаточно. Нужно еще подключать динамическую библиотеку, в которой находятся откомпилированные функции. Если я правильно понял, то вот такая строчка
Код:
gcc -c test.c Код:
gcc -o test test.o Можно попробовать сделать так: Код:
gcc -o test -lmysqlclient test.o libmysqlclient.so или libmysqlclient.a из стандартных путей (записаны в /etc/ld.so.conf). Правда, тут есть другая проблема: Хотя в заголовочных файлах mysql_connect присутствует, в библиотеке этой функции нет (используя nm, можно посмотреть ее содержимое). Кроме того, в самом заголовке (по крайней мере, в моей версии) написано так: Код:
Кстати, о динамических библиотеках и компиляции с помощью gcc можно читать вот тут. |
кстати = какие существуют способы (традиционные, если так можно выразиться) поиска библиотек, в которых находится нужная функция?
я напролом пользуюсь grep function_name /usr/lib/lib*so* а потом выбираю по смыслу))) просто некоторые функции встречаются в разных библиотеках (програмка использующая glut требует подключения штук трех - четырех иксовых библиотек, вот и ищешь, где что лежит) |
makaveli lcf
Как вариант: for a in [ /usr/lib/lib*.so ] ; do echo $a ; objdump -R -C $a | grep что-ищем ; done |
Цитата:
Я могу только предложить еще искать не во всех .so файлах, а только в тех, которые находятся в одном пакете с заголовочными (ну, или если заголовки в packagename-devel, то библиотеки будут в packagename). |
Figaro
в принципе так, но когда я сделал лишь -lglut как потом выяснилось, потребовалось -lXmu -lGl и так далее... но это видимо редкий случай... |
Время: 01:08. |
Время: 01:08.
© OSzone.net 2001-