2021-05-12 14:32:11
Ubuntu 14.04下使用libpq++
Postgres的c++介面早就改為libpqxx,libpq++在Ubuntu 14.04下不能編譯通過,為了使用libpq++需要做一些修改。
一、下載libpq++-4.0.tar.gz並解壓
------------------------------------------分割線------------------------------------------
免費下載地址在 http://linux.linuxidc.com/
使用者名稱與密碼都是www.linuxidc.com
具體下載目錄在 /2015年資料/12月/13日/Ubuntu 14.04下使用libpq++/
下載方法見 http://www.linuxidc.com/Linux/2013-07/87684.htm
------------------------------------------分割線------------------------------------------
二、進入libpq++-4.0目錄
三、開啟Makefile
修改POSTGRES_HOME=/opt/PostgreSQL/9.3 (你的postgresql安裝目錄)
修改CXXOPTS=-fPIC -DHAVE_NAMESPACE_STD -DHAVE_CXX_STRING_HEADER -DDLLIMPORT=""
64位元系統必需加上-fPIC
四、開啟pgdatabase.cc
在最前面包含stdlib.h檔名(否則atoi函數找不到)
五、make&sudo make install
六、/etc/ld.so.conf.d/ 或LD_LIBRARY_PATH加上庫搜尋路徑
並執行sudo ldconfig -v
或者在編譯的時候加上-Wl,-rpath=/opt/PostgreSQL/9.3/lib
七、測試
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");
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
cout<<data.FieldName(k);
cout <<" " ;
}
cout<<endl;
for (int i = 0; i < data.Tuples(); i++) {
for(int k=0; 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.3/include -L/opt/PostgreSQL/9.3/lib -lpq++ -lpq
./test
相關文章