ubuntu14.04下使用libpq++

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

Postgres的c++接口早就改为libpqxx,libpq++在ubuntu14.04下不能编译通过,为了使用libpq++需要做一些修改

一、下载libpq++-4.0.tar.gz并解压

http://download.chinaunix.net/download/0006000/5978.shtml

百度网盘下载 链接: https://pan.baidu.com/s/18mkvnB3XINf4KG25T6Rlew 提取码: sm8x

通过apt安装pg的下载这个版本,解压后直接编译即可:

链接: https://pan.baidu.com/s/1JyQQESkm4IKsSdqS0FSm5g 提取码: 9ynt

经测试在ubuntu18.04+pg11.2

三、打开Makefile

修改POSTGRES_HOME=/opt/PostgreSQL/9.5 (你的postgresql安装目录)

修改CXXOPTS=-fPIC -DHAVE_NAMESPACE_STD -DHAVE_CXX_STRING_HEADER -DDLLIMPORT=""

64位系统必需加上-fPIC

四、打开pgdatabase.cc

在最前面包含stdlib.h文件名(否则atoi函数找不到)

五、make&sudo make install

六、cd /opt/PostgreSQL/9.5/lib

sudo ln -s libpq++.so.4.0 libpq++.so.4

/etc/ld.so.conf.d/ 或LD_LIBRARY_PATH加上库搜寻路径

并执行sudo ldconfig -v

或者在编译的时候加上-Wl,-rpath=/opt/PostgreSQL/9.5/lib

七、测试

test.cpp(把mydb,mytable等修改一下)

#include 
#include 
#include 
using namespace std;
int  main()
{
	char query_string[256]= "SELECT * FROM mytable;";
	PgDatabase data("dbname = mydb user=myuser password=mypass");

	if (data.ConnectionBad())
	{
		cout <<"connected failed" << endl;
		cout <<"Error is "<

编译:

g++ test.cpp -o test -fPIC -DHAVE_NAMESPACE_STD -DHAVE_CXX_STRING_HEADER -DDLLIMPORT="" -I /opt/PostgreSQL/9.5/include -L/opt/PostgreSQL/9.5/lib -lpq++ -lpq  -Wl,-rpath=/opt/PostgreSQL/9.5/lib

./test

增加:/opt/PostgreSQL/9.5/lib/pkgconfig/libpq++.pc

prefix=/opt/PostgreSQL/9.5
exec_prefix=${prefix}
libdir=${exec_prefix}/lib
includedir=${prefix}/include

Name: libpq++
Description: a C++ API to the PostgreSQL database management system.
Version: 4.0
Libs: -L${libdir} -L/opt/PostgreSQL/9.5/lib -lpq++
Cflags: -I${includedir} -I/opt/PostgreSQL/9.5/include

 

sudo cp libpq++.pc /usr/lib/x86_64-linux-gnu/pkgconfig/.

编译指令可改为:

g++ test.cpp -o test -fPIC -DHAVE_NAMESPACE_STD -DHAVE_CXX_STRING_HEADER -DDLLIMPORT="" `pkg-config --libs --cflags libpq++ libpq` -Wl,-rpath=/opt/PostgreSQL/9.5/lib

 

转载于:https://my.oschina.net/u/2245781/blog/322564

你可能感兴趣的:(ubuntu14.04下使用libpq++)