既然您已经了解了如何构建嵌入式 SQL C 程序,您可能想知道如何编译它们。在编译之前,您需要使用嵌入式SQL C预处理器处理该文件,它会将您使用的SQL语句转换为特殊的函数调用。编译后,您必须链接一个包含所需函数的特殊库。这些函数从参数中获取信息,使用 libpq 接口执行SQL命令,并将结果放入为输出指定的参数中。
预处理器程序名为 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 库默认是线程安全的。但是,您可能需要使用一些线程命令行选项来编译您的客户端代码。
如果您在文档中发现任何不正确之处、与您在使用特定功能时的经验不符之处,或者需要进一步的澄清,请使用 此表格 报告文档问题。