LINUX.ORG.RU

PostgreSQL и Си как компилятор gcc заставить найти libpq

 ,


0

1

Вопрос по PostgreSQL и Си.

test@test2:~$ lsb_release -a

Distributor ID: Ubuntu Description: Ubuntu*Pack 14.04 UALinux Release: 14.04

Установил PostgreSQL по этому уроку http://hexvolt.blogspot.com/2012/11/postgresql-91-ubuntu-1204.html Всё работает создал базу, внёс данные из pgAdmin

Пытаюсь откомпилировать пример из книжки «Основы PostgreSQL» Ричард Стоунз, Нейл Мэттью. 408 страница. Доступ к PostgreSQL из C при помощи libpq

#include <stdlib.h>
#include <libpq-fe.h>

int main()
{
  PGconn *myconnection = PQconnectdb("");
  if(PQstatus(myconnection) == CONNECTION_OK)
    printf("connection made\n");
  else
    printf("connection failed\n");
  PQfinish(myconnection);
  return EXIT_SUCCESS;
}

компилирую по разному один из вариантов gcc -o connect connect.c –I/usr/include/postgresql -lpq gcc: error: –I/usr/include/postgresql: Нет такого файла или каталога

В книге советуют как то так: $ gcc –o program program.c –I/usr/local/pgsql/include –L/usr/local/pgsql/lib -lpq или так $ gcc –o program program.c –I/usr/local/pgsql/include -lpq

но так как разные дистрибутивы то советуют найти где хранится заголовочный файл я его нашёл в /usr/include/postgresql/libpq-fe.h так же там есть и другие файлы

С мейк файлом тоже не получается.Как же скомпилировать?Спасибо.



Последнее исправление: Klymedy (всего исправлений: 1)

Ответ на: комментарий от postgred

sudo apt-get install libpq-dev Password: Чтение списков пакетов… Готово Построение дерева зависимостей Чтение информации о состоянии… Готово Уже установлена самая новая версия libpq-dev. Следующий пакет устанавливался автоматически и больше не требуется: localechooser-data Для его удаления используйте «apt-get autoremove». обновлено 0, установлено 0 новых пакетов, для удаления отмечено 0 пакетов, и 687 пакетов не обновлено.

FizMat
() автор топика
Ответ на: комментарий от anonymous

Я почитал про pkg-config является системой управления флагами компилятора и компоновщика, которые используются утилитами automake и autoconf при создании библиотек.

А теперь в чём была загвоздка ввожу pkg-config --cflags --libs libpq выдаёт -I/usr/include/postgresql -lpq копирую и вставляю в $ gcc -o connect connect.c -I/usr/include/postgresql -lpq $ ./connect connection failed

Программа заработала.Так как сервер не включен.Точнее включён, но не совсем правильно. Так в чём же дело спросите вы, ведь я так и писал.Видимо то ли в пробелах после -I/usr/include/postgresql или кодировка символов не та.Вот так ).Либо нужно было установить флаги командой pkg-config --cflags --libs libpq Спасибо за помощь.Буквально выручили, целый день вчера не мог сделать. Да если кому то надо будет сам файл libpq.so находится в /usr/lib/x86_64-linux-gnu

FizMat
() автор топика
Ответ на: комментарий от FizMat

Видимо то ли в пробелах после -I/usr/include/postgresql

Книга у тебя в электронном виде? Ты команду компиляции оттуда скопировал, а не перенабрал вручную?

Да если кому то надо будет сам файл libpq.so находится

Надо использовать pkg-config, а не абсолютные пути забивать.

Begemoth ★★★★★
()
Последнее исправление: Begemoth (всего исправлений: 1)
Ответ на: комментарий от FizMat

Помню, когда-то вычищал Makefile какого-то японца от виндовых <CR><LF>, которые тогдашний gcc не мог распарсить. Поэтому тщательно следи за тем, что в gcc скармливаешь.

Shadow ★★★★★
()
Последнее исправление: Shadow (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.