云数据库 GAUSSDB-ecpg预处理以及编译执行

时间:2024-11-13 14:46:17

ecpg预处理以及编译执行

准备嵌入式SQL-C源程序,以.pgc为后缀名,ecpg负责将其转换成可被编译器编译的C语言程序。

生成的C语言程序被gcc编译器编译为可执行文件,运行该可执行文件实现客户端程序访问数据库。示例请参见常用示例章节。

  • ecpg预处理以及编译处理过程
    1. 预处理:ecpg -I $GAUSSHOME/include -o test.c test.pgc
      ecpg预处理的参数选项如下:
      ecpg [OPTION]...
      其中OPTION参数选项如下:
      • -o OUTFILE:预处理嵌入式SQL-C程序将结果写入OUTFILE,OUTFILE为C语言文件。
      • -I DIRECTORY:头文件的搜索路径。
      • -c:预处理嵌入式SQL-C程序自动生成C语言文件。
      • --version:查看ecpg当前版本。
      • -C MODE:指定预处理兼容模式,“ORA”为O兼容。
    2. 编译:gcc -I $GAUSSHOME/include/ecpg -I $GAUSSHOME/include -I $GAUSSHOME/include/gaussdb/server/ -L $GAUSSHOME/lib -lecpg -lrt -lpq -lpgtypes -lpthread test_ecpg.c -o test_ecpg
    3. 执行:./test
    • ecpg作为编译预处理工具,若在预处理或编译过程中出现找不到头文件或者函数实现的报错信息,可以根据需要指定头文件,或者链接动态库。
    • ecpg需要gcc、ld等编译预处理工具,建议gcc使用7.3.0版本。
    • 使用ecpg开发应用程序所依赖的其他动态库和头文件,常见的位于$GAUSSHOME/include/libpq, $GAUSSHOME/include。
    • 编译过程中常见的动态库依赖:-lpq、-lpq_ce、-lpthread。若开发过程中需要使用libpq通信库,则需要连接-lpq和-lpq_ce。若开发过程中需要使用多线程连接,则需要连接-lpthread。
support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0171.html