drogonframework / drogon

Drogon: A C++14/17/20 based HTTP web application framework running on Linux/macOS/Unix/Windows
MIT License
11.44k stars 1.1k forks source link

FATAL PostgreSQL is not supported! - DbClient.cc #954

Closed Alababdiy closed 3 years ago

Alababdiy commented 3 years ago

this error show up:

20210731 20:42:17.368526 UTC 24426 FATAL PostgreSQL is not supported! - DbClient.cc:41
webhook.ratina: /opt/vcpkg/buildtrees/trantor/src/v1.5.0-7331cf7675.clean/trantor/net/EventLoop.cc:115: trantor::EventLoop::~EventLoop(): Assertion `!looping_' failed.
Aborted

[root@localhost build]# yum list | grep postgresql

postgresql.x86_64 9.2.24-7.el7_9 @updates
postgresql-devel.x86_64 9.2.24-7.el7_9 @updates
postgresql-libs.x86_64 9.2.24-7.el7_9 @updates
postgresql-server.x86_64 9.2.24-7.el7_9 @updates
calligra-kexi-driver-postgresql.x86_64 2.9.10-2.el7 epel
collectd-postgresql.x86_64 5.8.1-1.el7 epel
freeradius-postgresql.x86_64 3.0.13-15.el7 base
libreoffice-postgresql.x86_64 1:5.3.6.1-25.el7_9 updates
opendbx-postgresql.x86_64 1.4.6-6.el7 epel
opensips-postgresql.x86_64 1.10.5-4.el7 epel
owncloud-postgresql.noarch 9.1.5-1.el7 epel
pcp-pmda-postgresql.x86_64 4.3.2-13.el7_9 updates
pdns-backend-postgresql.x86_64 4.1.14-1.el7 epel
perdition-postgresql.x86_64 2.2-2.el7 epel
postgresql.i686 9.2.24-7.el7_9 updates
postgresql-contrib.x86_64 9.2.24-7.el7_9 updates
postgresql-devel.i686 9.2.24-7.el7_9 updates
postgresql-docs.x86_64 9.2.24-7.el7_9 updates
postgresql-jdbc.noarch 9.2.1002-8.el7_8 updates
postgresql-jdbc-javadoc.noarch 9.2.1002-8.el7_8 updates
postgresql-libs.i686 9.2.24-7.el7_9 updates
postgresql-odbc.x86_64 09.03.0100-2.el7 base
postgresql-pgpool-II.x86_64 3.4.6-1.el7 epel
postgresql-pgpool-II-devel.x86_64 3.4.6-1.el7 epel
postgresql-pgpool-II-extensions.x86_64 3.4.6-1.el7 epel
postgresql-plperl.x86_64 9.2.24-7.el7_9 updates
postgresql-plpython.x86_64 9.2.24-7.el7_9 updates
postgresql-plruby.x86_64 0.5.3-13.el7 epel
postgresql-plruby-doc.x86_64 0.5.3-13.el7 epel
postgresql-pltcl.x86_64 9.2.24-7.el7_9 updates
postgresql-static.i686 9.2.24-7.el7_9 updates
postgresql-static.x86_64 9.2.24-7.el7_9 updates
postgresql-test.x86_64 9.2.24-7.el7_9 updates
postgresql-upgrade.x86_64 9.2.24-7.el7_9 updates
postgresqltuner.noarch 1.0.1-4.el7 epel
proftpd-postgresql.x86_64 1.3.5e-10.el7 epel
python-testing.postgresql.noarch 1.1.0-3.el7 epel
qt-postgresql.i686 1:4.8.7-9.el7_9 updates
qt-postgresql.x86_64 1:4.8.7-9.el7_9 updates
qt5-qtbase-postgresql.i686 5.9.7-5.el7_9 updates
qt5-qtbase-postgresql.x86_64 5.9.7-5.el7_9 updates
rh-postgresql10.x86_64 3.1-1.el7 centos-sclo-rh
rh-postgresql10-build.x86_64 3.1-1.el7 centos-sclo-rh
rh-postgresql10-postgresql.x86_64 10.17-1.el7 centos-sclo-rh
rh-postgresql10-postgresql-contrib.x86_64 10.17-1.el7 centos-sclo-rh
rh-postgresql10-postgresql-contrib-syspaths.x86_64
rh-postgresql10-postgresql-devel.x86_64 10.17-1.el7 centos-sclo-rh
rh-postgresql10-postgresql-docs.x86_64 10.17-1.el7 cent
marty1885 commented 3 years ago

IIRC yum list lists all packages. Use yum list installed to find the packages you installed. Install postgresql-devel and postgresql-libs and run CMake again. You should see it finding PostgreSQL (or a shortened message).

-- Found PostgreSQL: /usr/lib/libpq.so (found version "13.3")  
-- pg inc: /usr/include/usr/include/postgresql/server
-- Found pg: /usr/lib/libpq.so  
-- libpq inc path:/usr/include/usr/include/postgresql/server
-- libpq lib:/usr/lib/libpq.so

Then rebuild drogon.

Alababdiy commented 3 years ago

IIRC yum list lists all packages. Use yum list installed to find the packages you installed. Install postgresql-devel and postgresql-libs and run CMake again. You should see it finding PostgreSQL (or a shortened message).

-- Found PostgreSQL: /usr/lib/libpq.so (found version "13.3")  
-- pg inc: /usr/include/usr/include/postgresql/server
-- Found pg: /usr/lib/libpq.so  
-- libpq inc path:/usr/include/usr/include/postgresql/server
-- libpq lib:/usr/lib/libpq.so

Then rebuild drogon.

yum list installed | grep postgresql

postgresql.x86_64                     9.2.24-7.el7_9             @updates       
postgresql-devel.x86_64               9.2.24-7.el7_9             @updates       
postgresql-libs.x86_64                9.2.24-7.el7_9             @updates       
postgresql-server.x86_64              9.2.24-7.el7_9             @updates

also i add (to check) :-

find_package(PostgreSQL REQUIRED)
target_link_libraries(${PROJECT_NAME} PRIVATE PostgreSQL::PostgreSQL)

cmake ..

-- jsoncpp verson:1.9.4
-- Found UUID: /opt/vcpkg/installed/x64-linux/lib/libuuid.a
-- use c++17
-- Found the following ICU libraries:
--   uc (required)
--   i18n (required)
-- Configuring done
-- Generating done
-- Build files have been written to: /root/webhook.ratina/build

Still same error

marty1885 commented 3 years ago

Are you using a pre-built drogon or are you building drogon drom source?

an-tao commented 3 years ago

Seems that the postgresql-devel package was not installed when building drogon library.

Alababdiy commented 3 years ago

After delete build folder then : - [root@localhost build]# cmake -D CMAKE_PREFIX_PATH="/opt/vcpkg/installed/x64-linux" -D CMAKE_TOOLCHAIN_FILE=/opt/vcpkg/scripts/buildsystems/vcpkg.cmake ..

-- Found Jsoncpp: /opt/vcpkg/installed/x64-linux/include  
-- jsoncpp verson:1.9.4
-- Looking for C++ include pthread.h
-- Looking for C++ include pthread.h - found
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Failed
-- Looking for pthread_create in pthreads
-- Looking for pthread_create in pthreads - not found
-- Looking for pthread_create in pthread
-- Looking for pthread_create in pthread - found
-- Found Threads: TRUE  
-- Found OpenSSL: /opt/vcpkg/installed/x64-linux/lib/libcrypto.a (found version "1.1.1k")  
-- Found c-ares: /opt/vcpkg/installed/x64-linux/include  
-- Found UUID: /opt/vcpkg/installed/x64-linux/lib/libuuid.a
-- Found ZLIB: /opt/vcpkg/installed/x64-linux/lib/libz.a (found version "1.2.11") 
-- Found Brotli: /opt/vcpkg/installed/x64-linux/lib/libbrotlidec-static.a  
-- use c++17
-- Found CURL: /opt/vcpkg/installed/x64-linux/share/curl/CURLConfig.cmake (found version "7.74.0-DEV")  
-- Found nlohmann_json: /opt/vcpkg/installed/x64-linux/share/nlohmann_json/nlohmann_jsonConfig.cmake (found version "3.9.1") 
-- Found the following ICU libraries:
--   uc (required)
--   i18n (required)
-- Found ICU: /opt/vcpkg/installed/x64-linux/include (found suitable version "69.1", minimum required is "61.0") 
-- Found PostgreSQL: /opt/vcpkg/installed/x64-linux/lib/libpq.a (found version "12.2")  
-- Configuring done
-- Generating done
CMake Warning:
  Manually-specified variables were not used by the project:

    CMAKE_TOOLCHAIN_FILE

-- Build files have been written to: /root/webhook.ratina/build

[root@localhost build]# make

[ 25%] Building CXX object CMakeFiles/webhook.ratina.dir/main.cc.o
[ 50%] Building CXX object CMakeFiles/webhook.ratina.dir/controllers/Sender.cc.o
[ 75%] Building CXX object CMakeFiles/webhook.ratina.dir/controllers/messenger_receiver.cc.o
[100%] Linking CXX executable webhook.ratina
[100%] Built target webhook.ratina

[root@localhost build]# ./webhook.ratina

http://localhost:8000
20210801 08:12:35.940156 UTC 48539 FATAL PostgreSQL is not supported! - DbClient.cc:41

same error :(

Seems that the postgresql-devel package was not installed when building drogon library.

an-tao commented 3 years ago

did you install drogon with vcpkg install drogon? try to run drogon_ctl -v to check if the postgresql dependency is linked.

Alababdiy commented 3 years ago

New thing tools folder not exist :( alias drogon_ctl="/opt/vcpkg/packages/drogon_x64-linux/tools/drogon/drogon_ctl"

[root@localhost build]#  ls /opt/vcpkg/packages/drogon_x64-linux/
BUILD_INFO  CONTROL  debug  include  lib  share
[root@localhost build]# drogon_ctl
bash: /opt/vcpkg/packages/drogon_x64-linux/tools/drogon/drogon_ctl: No such file or directory
an-tao commented 3 years ago

after this PR, ctl, orm, etc. are features of drogon package, you should reinstall drogon with features like:

./vcpkg install "drogon[ctl]" --recurse

And if you use vcpkg, you don't need to use yum to install dependencies.

Alababdiy commented 3 years ago

still same problem after PR


(base) [root@localhost vcpkg]# gh pr checkout 18711
remote: Enumerating objects: 73, done.
remote: Counting objects: 100% (50/50), done.
remote: Total 73 (delta 50), reused 50 (delta 50), pack-reused 23
Unpacking objects: 100% (73/73), 39.40 KiB | 720.00 KiB/s, done.
From https://github.com/Microsoft/vcpkg
 * [new ref]             refs/pull/18711/head -> Greisby/master
Switched to branch 'Greisby/master'
(base) [root@localhost vcpkg]# cd ~/webhook.ratina/build/
(base) [root@localhost build]# cmake ..
-- jsoncpp verson:1.9.4
-- Found UUID: /opt/vcpkg/installed/x64-linux/lib/libuuid.a
-- use c++17
-- Found the following ICU libraries:
--   uc (required)
--   i18n (required)
-- Configuring done
-- Generating done
-- Build files have been written to: /root/webhook.ratina/build
(base) [root@localhost build]# drogon_
bash: drogon_: command not found
(base) [root@localhost build]# drogon_crl -v
bash: drogon_crl: command not found
(base) [root@localhost build]# exit 
exit
[root@localhost ~]# drogon_crl -v
-bash: drogon_crl: command not found
[root@localhost ~]# vcpkg remove drogon
The following packages will be removed:
    drogon:x64-linux
Removing package drogon:x64-linux...
Removing package drogon:x64-linux... done
[root@localhost ~]# vcpkg remove drogon[ctl]
The following packages are not installed, so not removed:
    drogon:x64-linux
Package drogon:x64-linux is not installed
[root@localhost ~]# vcpkg install "drogon[ctl]" --recurse
Computing installation plan...
The following packages will be built and installed:
    drogon[core,ctl]:x64-linux -> 1.7.1#1
Detecting compiler hash for triplet x64-linux...
Could not locate cached archive: /root/.cache/vcpkg/archives/4e/4ec322822bc9561903a12fbde9953fdb12200c456fbf17585c381eefb261d5a8.zip
Starting package 1/1: drogon:x64-linux
Building package drogon[core,ctl]:x64-linux...
-- Using /opt/vcpkg/downloads/an-tao-drogon-v1.7.1.tar.gz
-- Cleaning sources at /opt/vcpkg/buildtrees/drogon/src/v1.7.1-f3b2a1a3e7.clean. Use --editable to skip cleaning for the packages you specify.
-- Extracting source /opt/vcpkg/downloads/an-tao-drogon-v1.7.1.tar.gz
-- Applying patch vcpkg.patch
-- Applying patch resolv.patch
-- Applying patch drogon_config.patch
-- Applying patch static-brotli.patch
-- Using source at /opt/vcpkg/buildtrees/drogon/src/v1.7.1-f3b2a1a3e7.clean
-- Configuring x64-linux-dbg
-- Configuring x64-linux-rel
CMake Warning at scripts/cmake/vcpkg_configure_cmake.cmake:405 (message):
  The following variables are not used in CMakeLists.txt:

      CMAKE_DISABLE_FIND_PACKAGE_Boost

  Please recheck them and remove the unnecessary options from the
  `vcpkg_configure_cmake` call.

  If these options should still be passed for whatever reason, please use the
  `MAYBE_UNUSED_VARIABLES` argument.
Call Stack (most recent call first):
  ports/drogon/portfile.cmake:26 (vcpkg_configure_cmake)
  scripts/ports.cmake:141 (include)

-- Building x64-linux-dbg
-- Building x64-linux-rel
copying tools
-- Installing: /opt/vcpkg/packages/drogon_x64-linux/share/drogon/copyright
-- Performing post-build validation
-- Performing post-build validation done
Stored binary cache: /root/.cache/vcpkg/archives/4e/4ec322822bc9561903a12fbde9953fdb12200c456fbf17585c381eefb261d5a8.zip
Building package drogon[core,ctl]:x64-linux... done
Installing package drogon[core,ctl]:x64-linux...
Installing package drogon[core,ctl]:x64-linux... done
Elapsed time for package drogon:x64-linux: 1.942 min

Total elapsed time: 1.949 min

The package drogon:x64-linux provides CMake targets:

    find_package(Drogon CONFIG REQUIRED)
    # Note: 5 target(s) were omitted.
    target_link_libraries(main PRIVATE pg_lib UUID_lib coz::coz MySQL_lib)

[root@localhost ~]# /opt/vcpkg/packages/drogon_x64-linux/tools/drogon/drogon_ctl -v
     _                             
  __| |_ __ ___   __ _  ___  _ __  
 / _` | '__/ _ \ / _` |/ _ \| '_ \ 
| (_| | | | (_) | (_| | (_) | | | |
 \__,_|_|  \___/ \__, |\___/|_| |_|
                 |___/             

A utility for drogon
Version: 1.7.1
Git commit: 3fcf4a3b0c4dc249c4df90f089c96a9d4eea6921
Compilation: 
  Compiler: /opt/rh/devtoolset-8/root/usr/bin/c++
  Compiler ID: GNU
  Compilation flags: -O3 -DNDEBUG -std=c++17 -I/opt/vcpkg/installed/x64-linux/include -I/opt/vcpkg/packages/drogon_x64-linux/include
Libraries: 
  postgresql: no  (batch mode: no)
  mariadb: no
  sqlite3: no
  openssl: yes
  brotli: yes
  boost: no
  hiredis: no
  c-ares: yes
[root@localhost webhook.ratina]# mkdir build
[root@localhost webhook.ratina]# cd build/
[root@localhost build]# cmake ..
-- Looking for C++ include pthread.h
-- Looking for C++ include pthread.h - found
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Failed
-- Looking for pthread_create in pthreads
-- Looking for pthread_create in pthreads - not found
-- Looking for pthread_create in pthread
-- Looking for pthread_create in pthread - found
-- Found Threads: TRUE  
-- Found OpenSSL: /opt/vcpkg/installed/x64-linux/lib/libcrypto.a (found version "1.1.1k")  
-- Found c-ares: /opt/vcpkg/installed/x64-linux/include  
-- Found UUID: /opt/vcpkg/installed/x64-linux/lib/libuuid.a
-- Found ZLIB: /opt/vcpkg/installed/x64-linux/lib/libz.a (found version "1.2.11") 
-- Found Brotli: /opt/vcpkg/installed/x64-linux/lib/libbrotlidec-static.a  
-- use c++17
-- Found CURL: /opt/vcpkg/installed/x64-linux/share/curl/CURLConfig.cmake (found version "7.74.0-DEV")  
-- Found nlohmann_json: /opt/vcpkg/installed/x64-linux/share/nlohmann_json/nlohmann_jsonConfig.cmake (found version "3.9.1") 
-- Found the following ICU libraries:
--   uc (required)
--   i18n (required)
-- Found ICU: /opt/vcpkg/installed/x64-linux/include (found suitable version "69.1", minimum required is "61.0") 
-- Configuring done
-- Generating done
-- Build files have been written
``` to: /root/webhook.ratina/build

> after this [PR](https://github.com/microsoft/vcpkg/pull/18711), ctl, orm, etc. are features of drogon package, you should reinstall drogon with features like:
> 
> ```shell
> ./vcpkg install "drogon[ctl]" --recurse
> ```
> 
> And if you use vcpkg, you don't need to use yum to install dependencies.
an-tao commented 3 years ago
./vcpkg install "drogon[ctl,postgres]"
Alababdiy commented 3 years ago
./vcpkg install "drogon[ctl,postgres]"

;( [root@localhost build]# make


/opt/vcpkg/installed/x64-linux/lib/libpq.a(fe-connect.o): In function `internal_cancel':
fe-connect.c:(.text+0xa7e): undefined reference to `strlcpy'
fe-connect.c:(.text+0xaa1): undefined reference to `pg_strerror_r'
fe-connect.c:(.text+0xaee): undefined reference to `strlcpy'
fe-connect.c:(.text+0xb02): undefined reference to `strlcpy'
/opt/vcpkg/installed/x64-linux/lib/libpq.a(fe-connect.o): In function `default_threadlock':
fe-connect.c:(.text+0xb54): undefined reference to `pg_fprintf'
/opt/vcpkg/installed/x64-linux/lib/libpq.a(fe-connect.o): In function `connectFailureMessage':
fe-connect.c:(.text+0xe6f): undefined reference to `pg_strerror_r'
fe-connect.c:(.text+0xecd): undefined reference to `pg_strerror_r'
fe-connect.c:(.text+0xf32): undefined reference to `pg_getnameinfo_all'
fe-connect.c:(.text+0xf44): undefined reference to `pg_strerror_r'
fe-connect.c:(.text+0xfa8): undefined reference to `inet_net_ntop'
fe-connect.c:(.text+0xfe0): undefined reference to `inet_net_ntop'
/opt/vcpkg/installed/x64-linux/lib/libpq.a(fe-connect.o): In function `closePGconn':
fe-connect.c:(.text+0x10f9): undefined reference to `pg_freeaddrinfo_all'
/opt/vcpkg/installed/x64-linux/lib/libpq.a(fe-connect.o): In function `PQcancel':
fe-connect.c:(.text+0x1312): undefined reference to `strlcpy'
/opt/vcpkg/installed/x64-linux/lib/libpq.a(fe-connect.o): In function `PQrequestCancel':
fe-connect.c:(.text+0x13a0): undefined reference to `strlcpy'
/opt/vcpkg/installed/x64-linux/lib/libpq.a(fe-connect.o): In function `PQconnectPoll':
fe-connect.c:(.text+0x151f): undefined reference to `pg_freeaddrinfo_all'
fe-connect.c:(.text+0x15e9): undefined reference to `pg_snprintf'
fe-connect.c:(.text+0x164c): undefined reference to `pg_snprintf'
fe-connect.c:(.text+0x1807): undefined reference to `pg_strerror_r'
fe-connect.c:(.text+0x185c): undefined reference to `pg_getaddrinfo_all'
fe-connect.c:(.text+0x1aa3): undefined reference to `pg_set_noblock'
fe-connect.c:(.text+0x1aca): undefined reference to `pg_strerror_r'
fe-connect.c:(.text+0x2067): undefined reference to `pg_getaddrinfo_all'
fe-connect.c:(.text+0x2352): undefined reference to `pg_getaddrinfo_all'
fe-connect.c:(.text+0x2584): undefined reference to `pg_freeaddrinfo_all'
fe-connect.c:(.text+0x27db): undefined reference to `inet_net_ntop'
fe-connect.c:(.text+0x2913): undefined reference to `inet_net_ntop'
fe-connect.c:(.text+0x29a2): undefined reference to `pg_strerror_r'
fe-connect.c:(.text+0x2a18): undefined reference to `getpeereid'
fe-connect.c:(.text+0x2a3e): undefined reference to `pg_strerror_r'
fe-connect.c:(.text+0x2a8b): undefined reference to `pg_strerror_r'
fe-connect.c:(.text+0x2b71): undefined reference to `pg_strerror_r'
fe-connect.c:(.text+0x2c1c): undefined reference to `pqGetpwuid'
fe-connect.c:(.text+0x2ca5): undefined reference to `pg_strerror_r'
fe-connect.c:(.text+0x2d82): undefined reference to `pg_strerror_r'
fe-connect.c:(.text+0x2ed2): undefined reference to `pg_strerror_r'
fe-connect.c:(.text+0x2fa0): undefined reference to `pg_strerror_r'
fe-connect.c:(.text+0x2fd7): undefined reference to `pg_strerror_r'
/opt/vcpkg/installed/x64-linux/lib/libpq.a(fe-connect.o):fe-connect.c:(.text+0x3036): more undefined references to `pg_strerror_r' follow
/opt/vcpkg/installed/x64-linux/lib/libpq.a(fe-connect.o): In function `PQresetStart':
fe-connect.c:(.text+0x35b9): undefined reference to `pg_link_canary_is_frontend'
/opt/vcpkg/installed/x64-linux/lib/libpq.a(fe-connect.o): In function `PQreset':
fe-connect.c:(.text+0x36a1): undefined reference to `pg_link_canary_is_frontend'
/opt/vcpkg/installed/x64-linux/lib/libpq.a(fe-connect.o): In function `PQsetClientEncoding':
fe-connect.c:(.text+0x3e3e): undefined reference to `pg_sprintf'
fe-connect.c:(.text+0x3e80): undefined reference to `pg_get_encoding_from_locale'
/opt/vcpkg/installed/x64-linux/lib/libpq.a(fe-connect.o): In function `pqGetHomeDirectory':
fe-connect.c:(.text+0x4010): undefined reference to `pqGetpwuid'
fe-connect.c:(.text+0x402a): undefined reference to `strlcpy'
/opt/vcpkg/installed/x64-linux/lib/libpq.a(fe-connect.o): In function `parseServiceInfo':
fe-connect.c:(.text+0x40cc): undefined reference to `strlcpy'
fe-connect.c:(.text+0x412c): undefined reference to `pg_snprintf'
fe-connect.c:(.text+0x41f6): undefined reference to `pg_snprintf'
/opt/vcpkg/installed/x64-linux/lib/libpq.a(fe-connect.o): In function `connectOptions2':
fe-connect.c:(.text+0x5dfc): undefined reference to `pg_snprintf'
fe-connect.c:(.text+0x6129): undefined reference to `pg_fprintf'
fe-connect.c:(.text+0x6206): undefined reference to `pg_get_encoding_from_locale'
/opt/vcpkg/installed/x64-linux/lib/libpq.a(fe-connect.o): In function `PQconnectStartParams':
fe-connect.c:(.text+0x6787): undefined reference to `pg_link_canary_is_frontend'
/opt/vcpkg/installed/x64-linux/lib/libpq.a(fe-connect.o): In function `PQconnectStart':
fe-connect.c:(.text+0x6ce4): undefined reference to `pg_link_canary_is_frontend'
/opt/vcpkg/installed/x64-linux/lib/libpq.a(fe-connect.o): In function `PQsetdbLogin':
fe-connect.c:(.text+0x7503): undefined reference to `pg_link_canary_is_frontend'
/opt/vcpkg/installed/x64-linux/lib/libpq.a(fe-connect.o): In function `defaultNoticeProcessor':
fe-connect.c:(.text+0x17): undefined reference to `pg_fprintf'
/opt/vcpkg/installed/x64-linux/lib/libpq.a(fe-exec.o): In function `pqInternalNotice':
fe-exec.c:(.text+0xf7d): undefined reference to `pg_vsnprintf'
fe-exec.c:(.text+0x1061): undefined reference to `pg_sprintf'
/opt/vcpkg/installed/x64-linux/lib/libpq.a(fe-exec.o): In function `pqSaveParameterStatus':
fe-exec.c:(.text+0x1591): undefined reference to `pg_fprintf'
/opt/vcpkg/installed/x64-linux/lib/libpq.a(fe-exec.o): In function `PQfnumber':
fe-exec.c:(.text+0x4679): undefined reference to `pg_tolower'
fe-exec.c:(.text+0x4738): undefined reference to `pg_tolower'
/opt/vcpkg/installed/x64-linux/lib/libpq.a(fe-misc.o): In function `pqSocketCheck':
fe-misc.c:(.text+0xc9): undefined reference to `pg_strerror_r'
/opt/vcpkg/installed/x64-linux/lib/libpq.a(fe-misc.o): In function `pqGetc':
fe-misc.c:(.text+0x43e): undefined reference to `pg_fprintf'
/opt/vcpkg/installed/x64-linux/lib/libpq.a(fe-misc.o): In function `pqGets':
fe-misc.c:(.text+0x50d): undefined reference to `pg_fprintf'
/opt/vcpkg/installed/x64-linux/lib/libpq.a(fe-misc.o): In function `pqGets_append':
fe-misc.c:(.text+0x5c3): undefined reference to `pg_fprintf'
/opt/vcpkg/installed/x64-linux/lib/libpq.a(fe-misc.o): In function `pqGetnchar':
fe-misc.c:(.text+0x63e): undefined reference to `pg_fprintf'
fe-misc.c:(.text+0x67a): undefined reference to `pg_fprintf'
/opt/vcpkg/installed/x64-linux/lib/libpq.a(fe-misc.o):fe-misc.c:(.text+0x6d0): more undefined references to `pg_fprintf' follow
/opt/vcpkg/installed/x64-linux/lib/libpq.a(fe-protocol2.o): In function `pqSetenvPoll':
fe-protocol2.c:(.text+0x88f): undefined reference to `pg_strcasecmp'
fe-protocol2.c:(.text+0x8b3): undefined reference to `pg_sprintf'
fe-protocol2.c:(.text+0x934): undefined reference to `pg_strcasecmp'
fe-protocol2.c:(.text+0x94b): undefined reference to `pg_sprintf'
fe-protocol2.c:(.text+0xa98): undefined reference to `pg_sprintf'
fe-protocol2.c:(.text+0xab8): undefined reference to `pg_sprintf'
/opt/vcpkg/installed/x64-linux/lib/libpq.a(fe-protocol2.o): In function `pqParseInput2':
fe-protocol2.c:(.text+0xf3c): undefined reference to `strlcpy'
/opt/vcpkg/installed/x64-linux/lib/libpq.a(fe-protocol3.o): In function `pqGetErrorNotice3':
fe-protocol3.c:(.text+0xe2f): undefined reference to `strlcpy'
/opt/vcpkg/installed/x64-linux/lib/libpq.a(fe-protocol3.o): In function `pqParseInput3':
fe-protocol3.c:(.text+0x14a8): undefined reference to `strlcpy'
/opt/vcpkg/installed/x64-linux/lib/libpq.a(fe-protocol3.o): In function `pqBuildStartupPacket3':
fe-protocol3.c:(.text+0x2d58): undefined reference to `pg_strcasecmp'
fe-protocol3.c:(.text+0x2ed8): undefined reference to `pg_strcasecmp'
/opt/vcpkg/installed/x64-linux/lib/libpq.a(pqexpbuffer.o): In function `printfPQExpBuffer':
pqexpbuffer.c:(.text+0x2bc): undefined reference to `pg_vsnprintf'
/opt/vcpkg/installed/x64-linux/lib/libpq.a(pqexpbuffer.o): In function `appendPQExpBuffer':
pqexpbuffer.c:(.text+0x42c): undefined reference to `pg_vsnprintf'
/opt/vcpkg/installed/x64-linux/lib/libpq.a(fe-secure.o): In function `pqsecure_raw_read':
fe-secure.c:(.text+0xec): undefined reference to `pg_strerror_r'
/opt/vcpkg/installed/x64-linux/lib/libpq.a(fe-secure.o): In function `pqsecure_raw_write':
fe-secure.c:(.text+0x468): undefined reference to `pg_strerror_r'
/opt/vcpkg/installed/x64-linux/lib/libpq.a(encnames.o): In function `pg_char_to_encoding':
encnames.c:(.text+0x12c): undefined reference to `pg_fprintf'
/opt/vcpkg/installed/x64-linux/lib/libpq.a(fe-secure-openssl.o): In function `SSLerrmessage':
fe-secure-openssl.c:(.text+0x49): undefined reference to `strlcpy'
fe-secure-openssl.c:(.text+0x72): undefined reference to `pg_snprintf'
fe-secure-openssl.c:(.text+0x95): undefined reference to `pg_snprintf'
/opt/vcpkg/installed/x64-linux/lib/libpq.a(fe-secure-openssl.o): In function `initialize_SSL':
fe-secure-openssl.c:(.text+0x3f9): undefined reference to `strlcpy'
fe-secure-openssl.c:(.text+0x499): undefined reference to `strlcpy'
fe-secure-openssl.c:(.text+0x549): undefined reference to `strlcpy'
fe-secure-openssl.c:(.text+0x5b9): undefined reference to `pg_snprintf'
fe-secure-openssl.c:(.text+0x6a9): undefined reference to `pg_snprintf'
fe-secure-openssl.c:(.text+0x6de): undefined reference to `pg_snprintf'
fe-secure-openssl.c:(.text+0x734): undefined reference to `strlcpy'
fe-secure-openssl.c:(.text+0x7dd): undefined reference to `strlcpy'
fe-secure-openssl.c:(.text+0x89e): undefined reference to `strlcpy'
fe-secure-openssl.c:(.text+0x96f): undefined reference to `strlcpy'
fe-secure-openssl.c:(.text+0x9a2): undefined reference to `pg_snprintf'
fe-secure-openssl.c:(.text+0x9c2): undefined reference to `pg_snprintf'
fe-secure-openssl.c:(.text+0x9e2): undefined reference to `pg_snprintf'
fe-secure-openssl.c:(.text+0xb71): undefined reference to `strlcpy'
fe-secure-openssl.c:(.text+0xb97): undefined reference to `pg_snprintf'
fe-secure-openssl.c:(.text+0xbb5): undefined reference to `pg_snprintf'
fe-secure-openssl.c:(.text+0xc17): undefined reference to `pg_snprintf'
fe-secure-openssl.c:(.text+0xc29): undefined reference to `strlcpy'
fe-secure-openssl.c:(.text+0xcac): undefined reference to `pg_snprintf'
fe-secure-openssl.c:(.text+0xcf9): undefined reference to `strlcpy'
fe-secure-openssl.c:(.text+0xd6c): undefined reference to `pg_snprintf'
fe-secure-openssl.c:(.text+0xe0f): undefined reference to `strlcpy'
fe-secure-openssl.c:(.text+0xe63): undefined reference to `pg_snprintf'
fe-secure-openssl.c:(.text+0xe83): undefined reference to `pg_strerror_r'
fe-secure-openssl.c:(.text+0xeeb): undefined reference to `strlcpy'
fe-secure-openssl.c:(.text+0xf62): undefined reference to `pg_snprintf'
fe-secure-openssl.c:(.text+0xf7d): undefined reference to `pg_snprintf'
fe-secure-openssl.c:(.text+0xf98): undefined reference to `pg_snprintf'
fe-secure-openssl.c:(.text+0xfb3): undefined reference to `pg_snprintf'
fe-secure-openssl.c:(.text+0xff3): undefined reference to `pg_snprintf'
/opt/vcpkg/installed/x64-linux/lib/libpq.a(fe-secure-openssl.o):fe-secure-openssl.c:(.text+0x10ce): more undefined references to `pg_snprintf' follow
/opt/vcpkg/installed/x64-linux/lib/libpq.a(fe-secure-openssl.o): In function `pgtls_read':
fe-secure-openssl.c:(.text+0x1297): undefined reference to `pg_strerror_r'
fe-secure-openssl.c:(.text+0x1360): undefined reference to `strlcpy'
fe-secure-openssl.c:(.text+0x1412): undefined reference to `pg_snprintf'
fe-secure-openssl.c:(.text+0x1462): undefined reference to `pg_snprintf'
/opt/vcpkg/installed/x64-linux/lib/libpq.a(fe-secure-openssl.o): In function `pgtls_write':
fe-secure-openssl.c:(.text+0x15d2): undefined reference to `pg_strerror_r'
fe-secure-openssl.c:(.text+0x1664): undefined reference to `strlcpy'
fe-secure-openssl.c:(.text+0x1712): undefined reference to `pg_snprintf'
fe-secure-openssl.c:(.text+0x1765): undefined reference to `pg_snprintf'
/opt/vcpkg/installed/x64-linux/lib/libpq.a(fe-secure-openssl.o): In function `pgtls_open_client':
fe-secure-openssl.c:(.text+0x1ca0): undefined reference to `strlcpy'
fe-secure-openssl.c:(.text+0x1d8c): undefined reference to `strlcpy'
fe-secure-openssl.c:(.text+0x1df0): undefined reference to `pg_strerror_r'
fe-secure-openssl.c:(.text+0x1e26): undefined reference to `pg_snprintf'
fe-secure-openssl.c:(.text+0x1e62): undefined reference to `pg_snprintf'
fe-secure-openssl.c:(.text+0x1e82): undefined reference to `pg_snprintf'
fe-secure-openssl.c:(.text+0x1ec1): undefined reference to `pg_snprintf'
/opt/vcpkg/installed/x64-linux/lib/libpq.a(fe-secure-openssl.o): In function `PQsslAttribute':
fe-secure-openssl.c:(.text+0x200f): undefined reference to `pg_snprintf'
/opt/vcpkg/installed/x64-linux/lib/libpq.a(fe-secure-common.o): In function `pq_verify_peer_name_matches_certificate_name':
fe-secure-common.c:(.text+0xc8): undefined reference to `pg_strcasecmp'
fe-secure-common.c:(.text+0x163): undefined reference to `pg_strcasecmp'
/opt/vcpkg/installed/x64-linux/lib/libpq.a(fe-auth.o): In function `pg_fe_sendauth':
fe-auth.c:(.text+0x4ba): undefined reference to `pg_md5_encrypt'
fe-auth.c:(.text+0x4d6): undefined reference to `pg_md5_encrypt'
/opt/vcpkg/installed/x64-linux/lib/libpq.a(fe-auth.o): In function `pg_fe_getauthname':
fe-auth.c:(.text+0x778): undefined reference to `pqGetpwuid'
fe-auth.c:(.text+0x7e4): undefined reference to `pg_strerror_r'
/opt/vcpkg/installed/x64-linux/lib/libpq.a(fe-auth.o): In function `PQencryptPassword':
fe-auth.c:(.text+0x861): undefined reference to `pg_md5_encrypt'
/opt/vcpkg/installed/x64-linux/lib/libpq.a(fe-auth.o): In function `PQencryptPasswordConn':
fe-auth.c:(.text+0x979): undefined reference to `pg_md5_encrypt'
/opt/vcpkg/installed/x64-linux/lib/libpq.a(fe-auth-scram.o): In function `build_client_final_message':
fe-auth-scram.c:(.text+0xbe): undefined reference to `scram_SaltedPassword'
fe-auth-scram.c:(.text+0xdb): undefined reference to `scram_ClientKey'
fe-auth-scram.c:(.text+0xf0): undefined reference to `scram_H'
fe-auth-scram.c:(.text+0x100): undefined reference to `scram_HMAC_init'
fe-auth-scram.c:(.text+0x119): undefined reference to `scram_HMAC_update'
fe-auth-scram.c:(.text+0x12d): undefined reference to `scram_HMAC_update'
fe-auth-scram.c:(.text+0x146): undefined reference to `scram_HMAC_update'
fe-auth-scram.c:(.text+0x15a): undefined reference to `scram_HMAC_update'
fe-auth-scram.c:(.text+0x16f): undefined reference to `scram_HMAC_update'
fe-auth-scram.c:(.text+0x17f): undefined reference to `scram_HMAC_final'
fe-auth-scram.c:(.text+0x1c7): undefined reference to `pg_b64_enc_len'
fe-auth-scram.c:(.text+0x1f6): undefined reference to `pg_b64_encode'
fe-auth-scram.c:(.text+0x329): undefined reference to `pg_b64_enc_len'
fe-auth-scram.c:(.text+0x355): undefined reference to `pg_b64_encode'
/opt/vcpkg/installed/x64-linux/lib/libpq.a(fe-auth-scram.o): In function `pg_fe_scram_init':
fe-auth-scram.c:(.text+0x41e): undefined reference to `pg_saslprep'
/opt/vcpkg/installed/x64-linux/lib/libpq.a(fe-auth-scram.o): In function `pg_fe_scram_exchange':
fe-auth-scram.c:(.text+0x570): undefined reference to `pg_strong_random'
fe-auth-scram.c:(.text+0x582): undefined reference to `pg_b64_enc_len'
fe-auth-scram.c:(.text+0x5aa): undefined reference to `pg_b64_encode'
fe-auth-scram.c:(.text+0x7a9): undefined reference to `pg_b64_dec_len'
fe-auth-scram.c:(.text+0x7d2): undefined reference to `pg_b64_decode'
fe-auth-scram.c:(.text+0xa23): undefined reference to `pg_b64_dec_len'
fe-auth-scram.c:(.text+0xa63): undefined reference to `pg_b64_decode'
fe-auth-scram.c:(.text+0xb85): undefined reference to `scram_ServerKey'
fe-auth-scram.c:(.text+0xb99): undefined reference to `scram_HMAC_init'
fe-auth-scram.c:(.text+0xbb7): undefined reference to `scram_HMAC_update'
fe-auth-scram.c:(.text+0xbcb): undefined reference to `scram_HMAC_update'
fe-auth-scram.c:(.text+0xbe9): undefined reference to `scram_HMAC_update'
fe-auth-scram.c:(.text+0xbfd): undefined reference to `scram_HMAC_update'
fe-auth-scram.c:(.text+0xc1b): undefined reference to `scram_HMAC_update'
fe-auth-scram.c:(.text+0xc2f): undefined reference to `scram_HMAC_final'
/opt/vcpkg/installed/x64-linux/lib/libpq.a(fe-auth-scram.o): In function `pg_fe_scram_build_verifier':
fe-auth-scram.c:(.text+0xecf): undefined reference to `pg_saslprep'
fe-auth-scram.c:(.text+0xeee): undefined reference to `pg_strong_random'
fe-auth-scram.c:(.text+0xf21): undefined reference to `scram_build_verifier'
collect2: error: ld returned 1 exit status
make[2]: *** [CMakeFiles/webhook.ratina.dir/build.make:148: webhook.ratina] Error 1
make[1]: *** [CMakeFiles/Makefile2:83: CMakeFiles/webhook.ratina.dir/all] Error 2
make: *** [Makefile:91: all] Error 2
an-tao commented 3 years ago

It seems something wrong with the libpq in vcpkg, I usually directly install drogon without vcpkg on linux.

Alababdiy commented 3 years ago

New Error here when try install drogon:

git clone https://github.com/an-tao/drogon cd drogon git submodule update --init mkdir build cd build cmake -D JSONCPP_LIBRARIES="/opt/jsoncpp/libjsoncpp.a" ..

make && sudo make install

[ 50%] Building CXX object CMakeFiles/drogon.dir/orm_lib/src/DbClientManager.cc.o
[ 51%] Linking CXX static library libdrogon.a
[ 51%] Built target drogon
[ 51%] Building CXX object examples/CMakeFiles/client.dir/client_example/main.cc.o
make[2]: *** No rule to make target '/opt/jsoncpp/libjsoncpp.a', needed by 'examples/client'.  Stop.
make[1]: *** [CMakeFiles/Makefile2:287: examples/CMakeFiles/client.dir/all] Error 2
make: *** [Makefile:136: all] Error 2
an-tao commented 3 years ago

install libjsoncpp to your system folder, and drogon will find it by itself.

Alababdiy commented 3 years ago

You are right, vcpkg packages have i issues with CentOS 7 . I install package as third party and use add_subdirectory in CMake then anything working fine .. Thanks an-tao 💯