1.11 编译和链接 libpq 程序 使用下面的步骤编译和链接libpq 程序: (1) 包含libpq-fe.h 头文件 #include <libpq-fe.h>如果没有包含libpq-fe.h 头文件,编译libpq 程序时会得到类似下面的错误: foo.c: In function `main':foo.c:34: `PGconn' undeclared (first use in this function)foo.c:35: `PGresult' undeclared (first use in this function)foo.c:54: `CONNECTION_BAD' undeclared (first use in this function)foo.c:68: `PGRES_COMMAND_OK' undeclared (first use in this function)foo.c:95: `PGRES_TUPLES_OK' undeclared (first use in this function)(2) 使用-Idirectory 选项告诉编译器存放libpq-fe.h 头文件的目录,例如: cc -c -I/usr/local/pgsql/include testprog.c如果使用makefile来编译程序,把下面的选项加到CPPFLAGS变量中: CPPFLAGS += -I/usr/local/pgsql/include可以使用数据库提供的工具pg_config来确定libpq-fe.h 头文件所在的目录,在操作系统中执行下面的命令即可: $ pg_config --includedir/usr/local/include如果编译器找不到libpq-fe.h 头文件,会报类似下面的错误: testlibpq.c:8:22: libpq-fe.h: No such file or directory(3) 链接libpq 程序时,必须使用选项-lpq和-Ldirectory。选项-Ldirectory指出存放libpq共享库文件的目录。注意,为了提高兼容性,-Ldirectory应该出现在-lpq的前面。例如: cc -o testprog testprog1.o testprog2.o -L/usr/local/pgsql/lib -lpq可以使用数据库提供的工具pg_config来确定存放libpq共享库文件的目录: $ pg_config --libdir/usr/local/pgsql/lib如果没使用-lpq选项,会遇到类似下面的错误: testlibpq.o: In function `main':testlibpq.o(.text+0x60): undefined reference to `PQsetdbLogin'testlibpq.o(.text+0x71): undefined reference to `PQstatus'testlibpq.o(.text+0xa4): undefined reference to `PQerrorMessage'如果-Ldirectory选项指定的存放libpq共享库文件的目录不正确,会遇到下面的错误: /usr/bin/ld: cannot find -lpq