Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Проблема с undefined symbol

12K
10 августа 2005 года
Dmitriy_Sh
3 / / 10.08.2005
Заранее извиняюсь если какую-ть ерунду скажу - в C под linux я полный чайник.

Пытаюсь откомпилировать gcc модуль (so), обращающийся к PostgreSQL. В коде по этому поводу прописано #include <libpq-fe.h>. Все компилируется и собирается, но при попытке поюзать этот so'шник возникают ошибки типа undefined symbol: PQconnectdb. Функция PQconnectdb в /usr/lib/libpq.so и /usr/lib/libpq.a есть - проверено nm. Других libpq на машине нет.

Как это лечить ? И вообще как определяется в каком именно либе (путь, имя файла) лежит та или иная функция ? При попытке посмотреть создаваемый so'шник ldd ссылки на libpq я не вижу. Это правильно или нет ? Если не правильно, то как это лечить ?
2.6K
10 августа 2005 года
NinthBit
43 / / 31.01.2005
Цитата:
Dmitriy_Sh
И вообще как определяется в каком именно либе (путь, имя файла) лежит та или иная функция ?


Как я понял, тебе все-таки требуется не объектный файл, а просто нужный заголовок, так что
$ man grep

В простейшем варианте:
$ grep -rn function_name includes_dir/*
Это выдаст тебе все файлы с номерами строк, где встречается твоя функция.

12K
11 августа 2005 года
Dmitriy_Sh
3 / / 10.08.2005
[QUOTE]Originally posted by NinthBit
Как я понял, тебе все-таки требуется не объектный файл, а просто нужный заголовок, так что
$ man grep

Заголовок libpq-fe.h лежит на месте (в /usr/include/), замечательно находится и там есть эта функция - при компиляции даже варнингов нет.

Прога, которую я компилирую выглядит весьма сырой (даже исходник пришлось править чтобы не было ОШИБОК СИНТАКСИСА), так что там наверняка что-то просто недописано в makefile'е. Вот только что ?..
2
11 августа 2005 года
squirL
5.6K / / 13.08.2003
Цитата:
Originally posted by Dmitriy_Sh
[QUOTE]Originally posted by NinthBit
Как я понял, тебе все-таки требуется не объектный файл, а просто нужный заголовок, так что
$ man grep

Заголовок libpq-fe.h лежит на месте (в /usr/include/), замечательно находится и там есть эта функция - при компиляции даже варнингов нет.

Прога, которую я компилирую выглядит весьма сырой (даже исходник пришлось править чтобы не было ОШИБОК СИНТАКСИСА), так что там наверняка что-то просто недописано в makefile'е. Вот только что ?..


функции в /usr/inlcude/libpq-fe.h - скорее всего нет. насколько я помню С - там есть прототип функции.
ищи в Makefile строку
gcc -lpq
если нет - добавь вручную. это заставит ld при линковании использовать libpq.so

12K
11 августа 2005 года
Dmitriy_Sh
3 / / 10.08.2005
Цитата:
Originally posted by squirL
функции в /usr/inlcude/libpq-fe.h - скорее всего нет. насколько я помню С - там есть прототип функции.
ищи в Makefile строку
gcc -lpq
если нет - добавь вручную. это заставит ld при линковании использовать libpq.so



Спасибо ! Добавление опции помогло.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог