Updated on 2025-05-29 GMT+08:00

ecpg Preprocessing and Compiling

Prepare C programs with embedded SQL statements with the extension .pgc. ecpg converts them into C programs that can be compiled by the C compiler.

The generated C program is compiled into an executable file by the compiler. The executable file is run to enable the client program to access the database. For details, see Examples.

  • ecpg preprocessing and C compilation process
    1. Preprocessing: ecpg -I $GAUSSHOME/include -o test.c test.pgc
      To execute ecpg preprocessing, run the following command:
      ecpg [OPTION]...
      The options are as follows:
      • -o OUTFILE: writes the result to an outfile, which is a C file.
      • -I DIRECTORY: specifies the path of the header file.
      • -c: automatically generates a C file.
      • --version: checks the current ecpg version.
      • -C MODE: specifies the preprocessing compatibility mode. A indicates O-compatible.
      • -r OPTION: specifies the running behavior. OPTION can be no_indicator, prepare, questionmarks, or with_hold.
        • no_indicator: A special value is used to indicate a null value.
        • prepare: All statements are prepared before using them.
        • questionmarks: A question mark can be used as a placeholder.
        • with_hold: A cursor is created without the HOLD keyword. After this option is specified, the value is WITH HOLD by default. (This function requires that the ECPG version be the same as the kernel version.)
    2. Compilation: 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. Execution: ./test
    • ecpg is a compilation preprocessing tool. If an error message is displayed indicating that the related header file or function implementation cannot be found during preprocessing or compilation, you can specify the header file or link the dynamic library as required.
    • ecpg requires compilation preprocessing tools such as GCC and ld. You are advised to use GCC 7.3.0.
    • Other dynamic libraries and header files on which the ecpg depends are usually stored in $GAUSSHOME/include/libpq and $GAUSSHOME/include.
    • Common dynamic library dependencies during compilation include: -lpq, -lpq_ce, and -lpthread. If the libpq communications library is required during development, connect to -lpq and -lpq_ce. If the multi-thread connection is required during development, connect to -lpthread.