ubuntu14.04下使用libpq++

Postgres的c++接口早就改成libpqxx,libpq++在ubuntu14.04下不能编译经过,为了使用libpq++须要作一些修改html

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

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

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

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

连接: https://pan.baidu.com/s/1JyQQESkm4IKsSdqS0FSm5g 提取码: 9yntubuntu

经测试在ubuntu18.04+pg11.2函数

3、打开Makefilepost

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

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

64位系统必需加上-fPIC

4、打开pgdatabase.cc

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

5、make&sudo make install

6、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

7、测试

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

#include <stdlib.h>
#include <iostream>
#include <libpq++.h>
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 "<<data.ErrorMessage() << endl;
		exit(1);
	}
	if (! data.ExecTuplesOk(query_string)) 
	{
		cout<<"Query Failed!" << endl;
		exit(1);
	}
	for(int k=0; k<data.Fields();k++)/**显示字段名称*/
	{
		cout<<data.FieldName(k);
		cout <<"      "     ;
	}
	cout<<endl;
	for (int i = 0; i < data.Tuples();i++)/**取得查询结果的记录数量*/
	{
		for(int k=0; k<data.Fields();k++)
		{
			cout << data.GetValue(i,k);
			cout <<" | "     ;
		}
		cout<<endl;

	}
	return 0 ;    
}

编译:

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

相关文章
相关标签/搜索