Search code examples
c++databasemariadbclientc++20

use mariadb-connector-cpp with cmake project


github repo. i am using c++20 with cmake on visual studio to program on wsl and getting error loading shared library. can't find file libmariadb.so.3.

I used the build instructions to build it for Debian & Ubuntu on wls and it was installed in these paths. lib path include path

so in my cmake I included

find_package(mariadbcpp)
include_directories("/usr/local/include/mariadb")
link_directories("/usr/local/lib/mariadb")
target_link_libraries(${PROJECT_NAME} mariadbcpp)

when I run I get the following error

error while loading shared libraries: libmariadb.so.3: cannot open shared object file: No such file or directory

I tried running

sudo /sbin/ldconfig -v

and I also tried including this in my top level cmake

SET(CMAKE_SKIP_BUILD_RPATH  FALSE)
SET(CMAKE_BUILD_WITH_INSTALL_RPATH FALSE) 
SET(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
SET(CMAKE_INSTALL_RPATH "/usr/local/lib/mariadb")

Solution

  • to get it working you just need to add this to your cmake

    include_directories("/usr/include/mariadb") #path to include folder
    add_library(mariadbcpp STATIC IMPORTED)
    set_property(TARGET mariadbcpp PROPERTY IMPORTED_LOCATION "/usr/lib/libmariadbcpp.so") #path to libmariadbcpp.so
    

    then just include

    #include <conncpp.hpp>
    

    in source

    to install I followed this Debian/Ubuntu and in step 10 the command to install libmariadbcpp.so.3 and lib/mariadb... should have been lib64/mariadb... like so

    sudo install lib64/mariadb/libmariadbcpp.so /usr/lib
    sudo install lib64/mariadb/libmariadbcpp.so.3 /usr/lib
    sudo install lib64/mariadb/plugin/* /usr/lib/mariadb/plugin