链接postgresql时C ++链接错误

时间:2012-11-17 10:58:06

标签: c++ postgresql-9.1

编译我的代码时遇到如下问题:

io.cpp:21: undefined reference to `PQconnectdb'

以及我的代码中发生的所有其他缺少postgres函数调用的实例。显然这是一个链接问题,我只是不确定链接问题是什么。

我正在编译以下内容:

mpiCC -c -O2 -g -Wall -Werror -I /usr/include/postgresql/ decisioning_mpi.cpp
g++ -c -O2 -g -Wall -Werror -I /usr/include/postgresql/ io.cpp
g++ -c -O2 -g -Wall -Werror -I /usr/include/postgresql/ calculations.cpp
g++ -c -O2 -g -Wall -Werror -I /usr/include/postgresql/ rules.cpp
g++ -c -O2 -g -Wall -Werror -I /usr/include/postgresql/ Instrument.cpp
g++ -c -O2 -g -Wall -Werror -I /usr/include/postgresql/ Backtest_Parameter_CPO.cpp
g++ -c -O2 -g -Wall -Werror -I /usr/include/postgresql/ Backtest_Trade_CPO.cpp
g++ -c -O2 -g -Wall -Werror -I /usr/include/postgresql/ Data_Bar.cpp
mpiCC -o decisioning_mpi -O2 -g -Wall -Werror -L/usr/lib -lm -lpq decisioning_mpi.o 
io.o calculations.o rules.o Instrument.o Backtest_Parameter_CPO.o Backtest_Trade_CPO.o Data_Bar.o

应该注意的是,这是 libpq-fe.h 的正确目录,并且我正在链接pq,所以我不确定为什么postgres函数没有正确链接。我正在运行Ubuntu 12.04并从synaptic安装了psql(PostgreSQL)9.1.6。我也会短路,我正在使用#include“libpq-fe.h”。

有关如何解决此链接问题的任何想法已解决?

1 个答案:

答案 0 :(得分:0)

-L/usr/lib/ -lm -lpq放在link命令的末尾,然后链接器可以找到符号

mpiCC -o decisioning_mpi -O2 -g -Wall -Werror decisioning_mpi.o io.o \
calculations.o rules.o Instrument.o Backtest_Parameter_CPO.o \
Backtest_Trade_CPO.o Data_Bar.o -L/usr/lib -lm -lpq

GCC链接参考: http://www.network-theory.co.uk/docs/gccintro/gccintro_18.html