Я пытаюсь проверить соединение с моей базой данных postgreSQL.Я установил libpqxx отсюда Официальный C ++ клиентский API для PostgreSQL .Я запустил ./configure PG_CONFIG=/usr/pgsql-10/bin/pg_config
для настройки перед выполнением make
и make install
с настройками по умолчанию.Я должен был установить postgresql10-libs
и postgresql10-devel
, чтобы иметь возможность иметь файл pg_config , потому что мой настоящий сервер PostgreSQL не на моем ПК.
Япытаюсь скомпилировать с флагами -lpqxx -lpq
.Я добавил это в мой CMakeLists.txt :
set(GCC_COVERAGE_COMPILE_FLAGS "-lpqxx -lpq -std=c++11")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${GCC_COVERAGE_COMPILE_FLAGS}")
Но я продолжаю получать эту ошибку:
Linking CXX executable myproject
/usr/bin/ld: cannot find -lpq
collect2: error: ld returned 1 exit status
gmake[3]: *** [CMakeFiles/myproject.dir/build.make:1187: myproject] Error 1
gmake[2]: *** [CMakeFiles/Makefile2:68: CMakeFiles/myproject.dir/all] Error 2
gmake[1]: *** [CMakeFiles/Makefile2:80: CMakeFiles/myproject.dir/rule] Error 2
gmake: *** [Makefile:118: myproject] Error 2
ОБНОВЛЕНИЕ 12.06.18
Я установил postgresql-devel
и изменил
set(GCC_COVERAGE_COMPILE_FLAGS "-lpqxx -lpq -std=c++11")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${GCC_COVERAGE_COMPILE_FLAGS}")
на
set(GCC_COVERAGE_COMPILE_FLAGS "-std=gnu++11")
set(PQXX_AND_PQ_FLAGS "-lpqxx -lpq -I/usr/local/include -L/usr/local/lib")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${PQXX_AND_PQ_FLAGS} ${GCC_COVERAGE_COMPILE_FLAGS}")
и ошибка /usr/bin/ld: cannot find -lpq
исчезла.
но теперь я получаю некоторые другие ошибки, касающиеся pqxx
CMakeFiles/myproject.dir/dev/hmmenc_client/db/db.cpp.o: In function `db::connect(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, int)':
/home/tglozman/CLionProjects/myproject/dev/hmmenc_client/db/db.cpp:17: undefined reference to `pqxx::connection_base::is_open() const'
/home/tglozman/CLionProjects/myproject/dev/hmmenc_client/db/db.cpp:18: undefined reference to `pqxx::connection_base::dbname()'
/home/tglozman/CLionProjects/myproject/dev/hmmenc_client/db/db.cpp:23: undefined reference to `pqxx::connection_base::disconnect()'
CMakeFiles/myproject.dir/dev/hmmenc_client/db/db.cpp.o: In function `pqxx::connection_base::connection_base(pqxx::connectionpolicy&)':
/usr/local/include/pqxx/connection_base.hxx:695: undefined reference to `int pqxx::internal::check_library_version<6, 2>()'
/usr/local/include/pqxx/connection_base.hxx:698: undefined reference to `pqxx::connection_base::clearcaps()'
CMakeFiles/myproject.dir/dev/hmmenc_client/db/db.cpp.o: In function `pqxx::connect_direct::connect_direct(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)':
/usr/local/include/pqxx/connection.hxx:83: undefined reference to `pqxx::connectionpolicy::connectionpolicy(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
/usr/local/include/pqxx/connection.hxx:83: undefined reference to `vtable for pqxx::connect_direct'
CMakeFiles/myproject.dir/dev/hmmenc_client/db/db.cpp.o: In function `pqxx::connect_direct::~connect_direct()':
/usr/local/include/pqxx/connection.hxx:78: undefined reference to `vtable for pqxx::connect_direct'
/usr/local/include/pqxx/connection.hxx:78: undefined reference to `pqxx::connectionpolicy::~connectionpolicy()'
CMakeFiles/myproject.dir/dev/hmmenc_client/db/db.cpp.o: In function `pqxx::basic_connection<pqxx::connect_direct>::basic_connection(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)':
/usr/local/include/pqxx/basic_connection.hxx:57: undefined reference to `pqxx::connection_base::init()'
CMakeFiles/myproject.dir/dev/hmmenc_client/db/db.cpp.o: In function `pqxx::basic_connection<pqxx::connect_direct>::~basic_connection()':
/usr/local/include/pqxx/basic_connection.hxx:66: undefined reference to `pqxx::connection_base::close()'
collect2: error: ld returned 1 exit status
У меня нет проблем в коде с #include <pqxx/pqxx>