# 36.10.处理嵌入式SQL程序
现在,您已经知道了如何生成嵌入式SQL C程序,您可能想知道如何编译它们。在编译之前,通过嵌入式SQL C预处理器运行该文件,该预处理器将使用的SQL语句转换为特殊函数调用。编译后,必须链接到包含所需函数的特殊库。这些函数从参数中获取信息,使用libpq接口执行SQL命令,并将结果放入为输出指定的参数中。
预处理器程序称为ecpg
并且包含在普通的PostgreSQL安装中。嵌入式SQL程序通常以扩展名命名.pgc
.如果你有一个名为项目1.pgc
,只需调用以下命令即可对其进行预处理:
ecpg prog1.pgc
这将创建一个名为项目1.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_配置
或包装配置
使用包名libecpg
获取安装路径。
如果使用make管理更大项目的生成过程,那么在make文件中包含以下隐式规则可能比较方便:
ECPG = ecpg
%.c: %.pgc
$(ECPG) $<
的完整语法ecpg
命令的详细信息见ecpg.
默认情况下,ecpg库是线程安全的。但是,您可能需要使用一些线程命令行选项来编译客户机代码。