pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。
现在你已经对如何构造嵌入式 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的选项。
如果你使用make来管理一个大工程的构建过程,把下面的隐式规则包括在你的 makefile 中将会很方便:
ECPG = ecpg
%.c: %.pgc
$(ECPG) $<
ecpg命令的完整语法可见ecpg。
ecpg库默认是线程安全的。不过,你可能需要使用一些线程命令行选项来编译你的客户端代码。
译文有误、术语不当或页面显示问题,请到译文仓库 pgsty/pgdoc 报告译文问题。 英文原文本身的问题,请在当前版本的对应页面向上游反馈;上游不再修订已结束维护的版本。