×
Мы обрабатываем cookies, чтобы сделать наш сайт удобнее и персонализированнее для вас. Подробнее: политика использования «cookies» и «политики конфиденциальности».

Для самостоятельной настройки ознакомьтесь с инструкцией

Дополнительные настройки cookies в браузерах

Файлы cookie автоматически загружаются в ваш браузер при посещении веб-сайта. У вас есть возможность управлять этими файлами. Если Вы не согласны с использованием файлов cookies, запретите их сохранение на своём устройстве, удалите уже имеющиеся файлы cookies через настройки браузера или прекратите использование сайта.

При отключении обработки cookie наш сайт продолжит функционировать, однако будут использоваться исключительно необходимые технические файлы, без которых работа ресурса невозможна.

Инструкция по отключению cookies
Принять
Настроить
Отклонить

ДОКУМЕНТАЦИЯ

Выберите версию, форк и язык для СУБД Digital Q.DataBase, чтобы прочитать или скачать всю документацию.
Техподдержка
Документация
Диасофт
Авторские права © 2016–2025 ООО "Диасофт Экосистема"
Скачать всю документацию:

4.1.21. Сборка libpq программ

Для сборки (то есть компиляции и компоновки) программы с использованием libpq необходимо выполнить следующие действия:

  • Подключите libpq-fe.h заголовочный файл:

    #include 
    

    В случае невыполнения этого действия компилятор обычно выводит сообщения об ошибках, подобные следующим:

    foo.c: In function `main':
    foo.c:34: `PGconn' undeclared (first use in this function)
    foo.c:35: `PGresult' undeclared (first use in this function)
    foo.c:54: `CONNECTION_BAD' undeclared (first use in this function)
    foo.c:68: `PGRES_COMMAND_OK' undeclared (first use in this function)
    foo.c:95: `PGRES_TUPLES_OK' undeclared (first use in this function)
    

  • Укажите компилятору путь к директории, в которую были установлены Digital Q.DataBase заголовочные файлы, передав -Iдиректория параметр компилятору. (В некоторых случаях компилятор просматривает нужную директорию по умолчанию, поэтому данный параметр можно опустить.) Например, командная строка компиляции может иметь следующий вид:

    cc -c -I/usr/local/pgsql/include testprog.c
    

    При использовании make-файлов добавьте этот параметр в CPPFLAGS переменную:

    CPPFLAGS += -I/usr/local/pgsql/include
    

    Если существует вероятность того, что программа будет компилироваться другими пользователями, не следует жестко кодировать путь к директории таким образом. Вместо этого для поиска заголовочных файлов можно запустить утилиту pg_config , чтобы определить их расположение в локальной системе:

    $ pg_config --includedir
    /usr/local/include
    

    Если имеется pkg-config вместо этого можно выполнить команду:

    $ pkg-config --cflags libpq
    -I/usr/local/include
    

    Обратите внимание, что в данном случае флаг уже будет добавлен -I перед путем.

    Если компилятору не будет передан корректный параметр, это приведет к возникновению ошибки, например:

    testlibpq.c:8:22: libpq-fe.h: No such file or directory
    

  • При компоновке итоговой программы укажите параметр -lpq для того чтобы libpq была подключена библиотека, а также укажите параметр -Lдиректория чтобы указать компилятору каталог, в котором libpq эта библиотека расположена. (Опять же, по умолчанию компилятор просматривает некоторые каталоги.) Для обеспечения максимальной переносимости поместите -L данный параметр перед -lpq параметра. Например:

    cc -o testprog testprog1.o testprog2.o -L/usr/local/pgsql/lib -lpq
    

    Определить каталог библиотек можно с помощью команды pg_config также:

    $ pg_config --libdir
    /usr/local/pgsql/lib
    

    Либо снова воспользуйтесь командой pkg-config:

    $ pkg-config --libs libpq
    -L/usr/local/pgsql/lib -lpq
    

    Следует еще раз отметить, что при этом выводятся полные параметры, а не только путь.

    Сообщения об ошибках, указывающие на проблемы в данной области, могут иметь следующий вид:

    testlibpq.o: In function `main':
    testlibpq.o(.text+0x60): undefined reference to `PQsetdbLogin'
    testlibpq.o(.text+0x71): undefined reference to `PQstatus'
    testlibpq.o(.text+0xa4): undefined reference to `PQerrorMessage'
    

    Это означает, что был пропущен параметр -lpq.

    /usr/bin/ld: cannot find -lpq
    

    Это означает, что была пропущена -L опция или была указана неверная директория.

Наверх
свяжитесь
с нами
контакты
Для прямой связи с нами вы можете использовать контакты ниже, либо оставить заявку через форму обратной связи, и мы обязательно свяжемся с вами

*поля обязательные к заполнению