Проблема с undefined symbol
Пытаюсь откомпилировать 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 я не вижу. Это правильно или нет ? Если не правильно, то как это лечить ?
Цитата:
Dmitriy_Sh
И вообще как определяется в каком именно либе (путь, имя файла) лежит та или иная функция ?
И вообще как определяется в каком именно либе (путь, имя файла) лежит та или иная функция ?
Как я понял, тебе все-таки требуется не объектный файл, а просто нужный заголовок, так что
$ man grep
В простейшем варианте:
$ grep -rn function_name includes_dir/*
Это выдаст тебе все файлы с номерами строк, где встречается твоя функция.
Как я понял, тебе все-таки требуется не объектный файл, а просто нужный заголовок, так что
$ man grep
Заголовок libpq-fe.h лежит на месте (в /usr/include/), замечательно находится и там есть эта функция - при компиляции даже варнингов нет.
Прога, которую я компилирую выглядит весьма сырой (даже исходник пришлось править чтобы не было ОШИБОК СИНТАКСИСА), так что там наверняка что-то просто недописано в makefile'е. Вот только что ?..
Цитата:
Originally posted by Dmitriy_Sh
[QUOTE]Originally posted by NinthBit
Как я понял, тебе все-таки требуется не объектный файл, а просто нужный заголовок, так что
$ man grep
Заголовок libpq-fe.h лежит на месте (в /usr/include/), замечательно находится и там есть эта функция - при компиляции даже варнингов нет.
Прога, которую я компилирую выглядит весьма сырой (даже исходник пришлось править чтобы не было ОШИБОК СИНТАКСИСА), так что там наверняка что-то просто недописано в makefile'е. Вот только что ?..
[QUOTE]Originally posted by NinthBit
Как я понял, тебе все-таки требуется не объектный файл, а просто нужный заголовок, так что
$ man grep
Заголовок libpq-fe.h лежит на месте (в /usr/include/), замечательно находится и там есть эта функция - при компиляции даже варнингов нет.
Прога, которую я компилирую выглядит весьма сырой (даже исходник пришлось править чтобы не было ОШИБОК СИНТАКСИСА), так что там наверняка что-то просто недописано в makefile'е. Вот только что ?..
функции в /usr/inlcude/libpq-fe.h - скорее всего нет. насколько я помню С - там есть прототип функции.
ищи в Makefile строку
gcc -lpq
если нет - добавь вручную. это заставит ld при линковании использовать libpq.so
Цитата:
Originally posted by squirL
функции в /usr/inlcude/libpq-fe.h - скорее всего нет. насколько я помню С - там есть прототип функции.
ищи в Makefile строку
gcc -lpq
если нет - добавь вручную. это заставит ld при линковании использовать libpq.so
функции в /usr/inlcude/libpq-fe.h - скорее всего нет. насколько я помню С - там есть прототип функции.
ищи в Makefile строку
gcc -lpq
если нет - добавь вручную. это заставит ld при линковании использовать libpq.so
Спасибо ! Добавление опции помогло.