Теперь, когда вы имеете представление о том, как создавать программы на языке C с внедренным SQL, вы, вероятно, захотите узнать, как их компилировать. Перед компиляцией необходимо обработать файл с помощью внедренного SQL C препроцессора ECPG, который преобразует SQL использованные вами операторы SQL в специальные вызовы функций. После компиляции необходимо выполнить компоновку со специальной библиотекой, содержащей необходимые функции. Эти функции извлекают информацию из аргументов, выполняют SQL команду через интерфейс libpq интерфейс и помещают результат в аргументы, определенные для вывода.
Программа-препроцессор называется ecpg и
включена в стандартную установку Digital Q.DataBase .
Файлы программ с внедренным SQL обычно имеют расширение
.pgc. Если имеется файл программы с именем
prog1.pgc, его можно обработать препроцессором, просто
вызвав команду:
ecpg prog1.pgc
В результате будет создан файл с именем prog1.c. Если
входные файлы не соответствуют рекомендуемому шаблону именования, вы
можете явно указать выходной файл, используя параметр
-o option.
Сгенерированный файл можно скомпилировать обычным способом, например:
cc -c prog1.c
Созданные файлы исходного кода на языке C включают заголовочные файлы из
Digital Q.DataBase директории установки, поэтому если вы установили
Digital Q.DataBase в каталог, который не просматривается по умолчанию, вам необходимо добавить параметр, такой как
-I/usr/local/pgsql/include в командную строку
компиляции.
Для компоновки программы с внедренным SQL необходимо включить
libecpg , например:
cc -o myprog prog1.o prog2.o ... -lecpg
Кроме того, может потребоваться добавить параметр, такой как
-L/usr/local/pgsql/lib в данную командную строку.
Вы можете
использовать pg_config
или pkg-config с именем пакета libecpg для получения путей к вашей установке.
Если управление процессом сборки крупного проекта осуществляется с помощью make, может быть удобно добавить в ваши make-файлы следующее неявное правило:
ECPG = ecpg
%.c: %.pgc
$(ECPG) $<
Полный синтаксис команды ecpg команда подробно описана в ecpg.
Параметр ecpg библиотека по умолчанию является потокобезопасной. Однако при компиляции клиентского кода может потребоваться указать определенные параметры командной строки для поддержки многопоточности.