现在您知道如何形成内嵌 SQL C 程序,您可能想知道如何编译它们。在编译之前,您通过内嵌 CC 预处理器运行该文件,它会将您用于特殊函数调用的C语句转换。在编译之后,您必须与包含所需函数的特殊库链接。这些函数从参数中获取信息,使用 libpq 接口执行C命令,并将结果放入指定用于输出的参数中。
预处理器程序名为 ecpg
,包含在标准的PostgreSQL 安装中。内嵌 SQL 程序通常命名,其扩展名为 .pgc
。如果您有一个程序文件名为 prog1.pgc
,您可以通过简单地调用对其进行预处理
ecpg prog1.pgc
这将创建一个名为 prog1.c
的文件。如果您的输入文件不遵循建议的命名模式,您可以使用 -o
选项明确指定输出文件。
预处理的文件可以正常编译,例如
cc -c prog1.c
生成的 C 源文件包括来自 PostgreSQL 安装的标题文件,所以如果您将PostgreSQL 安装在默认未搜索到的位置,您必须将一个选项(如 -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 管理较大的项目的构建流程,将以下隐式规则包含到您的 makefile 中可能比较方便
ECPG = ecpg %.c: %.pgc $(ECPG) $<
ecpg
命令的完整语法在 ecpg 中详细介绍。
默认情况下,ecpg 库是线程安全的。但是,您可能需要使用一些线程命令行选项才能编译您的客户端代码。