问题描述
我试图用pqxx编译一个非常简单的程序(样例,什么都不做),但不能做。
以下是'程序':
I'm trying to compile a very simple program (sample that does nothing) with pqxx, but cannot do it.Here's the 'program':
$ cat xx.cpp
$ cat xx.cpp
#include <pqxx/pqxx>
using namespace pqxx;
int main()
{
connection conn("dbname=dout1");
return 0;
}
我用来尝试在C ++中编译的命令:
The command I used to try to compile in C++:
g++ -I /usr/local/include/ -L /usr/local/lib/ -l pqxx -I /opt/postgres_home/include/ -L /opt/postgres_home/lib/ -lpq xx.cpp
Message returned:
/tmp/cc18wMEy.o: In function `pqxx::connect_direct::connect_direct(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)':
xx.cpp:(.text._ZN4pqxx14connect_directC1ERKSs[pqxx::connect_direct::connect_direct(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)]+0x1f): undefined reference to `pqxx::connectionpolicy::connectionpolicy(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
xx.cpp:(.text._ZN4pqxx14connect_directC1ERKSs[pqxx::connect_direct::connect_direct(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)]+0x2a): undefined reference to `vtable for pqxx::connect_direct'
/tmp/cc18wMEy.o: In function `pqxx::connect_direct::~connect_direct()':
xx.cpp:(.text._ZN4pqxx14connect_directD1Ev[pqxx::connect_direct::~connect_direct()]+0x13): undefined reference to `vtable for pqxx::connect_direct'
xx.cpp:(.text._ZN4pqxx14connect_directD1Ev[pqxx::connect_direct::~connect_direct()]+0x1f): undefined reference to `pqxx::connectionpolicy::~connectionpolicy()'
/tmp/cc18wMEy.o: In function `pqxx::basic_connection<pqxx::connect_direct>::basic_connection(char const*)':
xx.cpp:(.text._ZN4pqxx16basic_connectionINS_14connect_directEEC1EPKc[pqxx::basic_connection<pqxx::connect_direct>::basic_connection(char const*)]+0x2b): undefined reference to `pqxx::connection_base::connection_base(pqxx::connectionpolicy&)'
xx.cpp:(.text._ZN4pqxx16basic_connectionINS_14connect_directEEC1EPKc[pqxx::basic_connection<pqxx::connect_direct>::basic_connection(char const*)]+0xd6): undefined reference to `pqxx::connection_base::init()'
/tmp/cc18wMEy.o: In function `pqxx::basic_connection<pqxx::connect_direct>::~basic_connection()':
xx.cpp:(.text._ZN4pqxx16basic_connectionINS_14connect_directEED1Ev[pqxx::basic_connection<pqxx::connect_direct>::~basic_connection()]+0x17): undefined reference to `pqxx::connection_base::close()'
collect2: ld returned 1 exit status
如果我喜欢:
$ g++ -I /usr/local/include/pqxx -L /usr/local/lib/ -l pqxx -l pq xx.cpp
返回:
/usr/lib64/gcc/x86_64-slackware-linux/4.4.4/../../../../x86_64-slackware-linux/bin/ld: cannot find -lpq
collect2: ld returned 1 exit status
考虑:
$ cat /etc/ld.so.conf
/usr/local/lib
/usr/local/pgsql/lib <-- just symlink to /opt/postgres_home/
/opt/postgres_home/lib
/usr/x86_64-slackware-linux/lib
/usr/lib64/seamonkey
/opt/kde3/lib64
/usr/lib64/jre1.6.0_16/lib/amd64
我真的不知道还要做什么,因为:
I really don't know what else to do, because:
# ls /opt/postgres_home/lib/libpq*
/opt/postgres_home/lib/libpq.a /opt/postgres_home/lib/libpq.so.5.3
/opt/postgres_home/lib/libpq.so /opt/postgres_home/lib/libpqwalreceiver.so
/opt/postgres_home/lib/libpq.so.5
Luis
推荐答案
在与pqxx作者Jeroen T. Vermeulen交换电子邮件后,我可以编译程序。
这个想法是在之前放置
xx.cpp
-lpqxx -lpq
所以,整个命令是:
After an email exchange with pqxx author Jeroen T. Vermeulen, I could manage to compile the 'program'.The idea was to place xx.cpp
before -lpqxx -lpq
So, the entire command is:
g++ -I /usr/local/include/pqxx/ -L /usr/local/lib/ -I /usr/local/pgsql/include/ -L /usr/local/pgsql/lib/ xx.cpp -lpqxx -lpq
现在可以工作了。
这篇关于使用pqxx编译程序问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!