drogonframework / drogon

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

build error with jsoncpp 1.7.4 #1418

Closed juPhae closed 6 months ago

juPhae commented 2 years ago

Notice failing to build with jsoncpp 1.7.4

OS: Ubuntu 20.04 Drogon version: 1.8.1 Compiler: aarch64-linux-gnu-g++ CPU architecture: ARM64(AArch64)

Additional context

  -- compiler: GNU
  -- Could NOT find c-ares (missing: C-ARES_INCLUDE_DIRS C-ARES_LIBRARIES)
  -- Could NOT find Doxygen (missing: DOXYGEN_EXECUTABLE)
  -- Found std::filesystem
  -- use c++17
  -- jsoncpp verson:1.7.4
  -- Found UUID: /usr/lib/aarch64-linux-gnu/libuuid.so
  -- Could NOT find BROTLI (missing: BROTLIDEC_LIBRARY BROTLIENC_LIBRARY BROTLICOMMON_LIBRARY BROTLI_INCLUDE_DIR)
  -- Could NOT find PostgreSQL (missing: PostgreSQL_LIBRARY PostgreSQL_INCLUDE_DIR)
  -- Could NOT find pg (missing: PG_LIBRARIES PG_INCLUDE_DIRS)
  -- MySql was not found.
  -- Ok! We find sqlite3!
  -- Could NOT find Hiredis (missing: HIREDIS_LIBRARY HIREDIS_INCLUDE_DIR)
  -- cspFile:/root/cpp_projects/drogon/drogon_ctl/templates/cmake.csp
  -- view classname:cmake
  -- cspFile:/root/cpp_projects/drogon/drogon_ctl/templates/config.csp
  -- view classname:config
  -- cspFile:/root/cpp_projects/drogon/drogon_ctl/templates/demoMain.csp
  -- view classname:demoMain
  -- cspFile:/root/cpp_projects/drogon/drogon_ctl/templates/filter_cc.csp
  -- view classname:filter_cc
  -- cspFile:/root/cpp_projects/drogon/drogon_ctl/templates/filter_h.csp
  -- view classname:filter_h
  -- cspFile:/root/cpp_projects/drogon/drogon_ctl/templates/gitignore.csp
  -- view classname:gitignore
  -- cspFile:/root/cpp_projects/drogon/drogon_ctl/templates/model_cc.csp
  -- view classname:model_cc
  -- cspFile:/root/cpp_projects/drogon/drogon_ctl/templates/model_h.csp
  -- view classname:model_h
  -- cspFile:/root/cpp_projects/drogon/drogon_ctl/templates/model_json.csp
  -- view classname:model_json
  -- cspFile:/root/cpp_projects/drogon/drogon_ctl/templates/plugin_cc.csp
  -- view classname:plugin_cc
  -- cspFile:/root/cpp_projects/drogon/drogon_ctl/templates/plugin_h.csp
  -- view classname:plugin_h
  -- cspFile:/root/cpp_projects/drogon/drogon_ctl/templates/restful_controller_base_cc.csp
  -- view classname:restful_controller_base_cc
  -- cspFile:/root/cpp_projects/drogon/drogon_ctl/templates/restful_controller_base_h.csp
  -- view classname:restful_controller_base_h
  -- cspFile:/root/cpp_projects/drogon/drogon_ctl/templates/restful_controller_cc.csp
  -- view classname:restful_controller_cc
  -- cspFile:/root/cpp_projects/drogon/drogon_ctl/templates/restful_controller_custom_cc.csp
  -- view classname:restful_controller_custom_cc
  -- cspFile:/root/cpp_projects/drogon/drogon_ctl/templates/restful_controller_custom_h.csp
  -- view classname:restful_controller_custom_h
  -- cspFile:/root/cpp_projects/drogon/drogon_ctl/templates/restful_controller_h.csp
  -- view classname:restful_controller_h
  -- cspFile:/root/cpp_projects/drogon/drogon_ctl/templates/test_cmake.csp
  -- view classname:test_cmake
  -- cspFile:/root/cpp_projects/drogon/drogon_ctl/templates/test_main.csp
  -- view classname:test_main
  -- bin:bin
  -- Could NOT find Doxygen (missing: DOXYGEN_EXECUTABLE)
  -- Configuring done
  -- Generating done
  -- Build files have been written to: /root/cpp_projects/drogon/build
  Consolidate compiler generated dependencies of target trantor
  [ 15%] Built target trantor
  Consolidate compiler generated dependencies of target drogon
  [ 15%] Building CXX object CMakeFiles/drogon.dir/lib/src/HttpAppFrameworkImpl.cc.o
  [ 16%] Building CXX object CMakeFiles/drogon.dir/lib/src/HttpBinder.cc.o
  [ 16%] Building CXX object CMakeFiles/drogon.dir/lib/src/HttpClientImpl.cc.o
  [ 17%] Building CXX object CMakeFiles/drogon.dir/lib/src/HttpControllersRouter.cc.o
  [ 17%] Building CXX object CMakeFiles/drogon.dir/lib/src/HttpFileImpl.cc.o
  [ 18%] Building CXX object CMakeFiles/drogon.dir/lib/src/HttpFileUploadRequest.cc.o
  [ 19%] Building CXX object CMakeFiles/drogon.dir/lib/src/HttpRequestImpl.cc.o
  [ 19%] Building CXX object CMakeFiles/drogon.dir/lib/src/HttpRequestParser.cc.o
  [ 20%] Building CXX object CMakeFiles/drogon.dir/lib/src/HttpResponseImpl.cc.o
  [ 20%] Building CXX object CMakeFiles/drogon.dir/lib/src/HttpResponseParser.cc.o
  [ 21%] Building CXX object CMakeFiles/drogon.dir/lib/src/HttpServer.cc.o
  [ 21%] Building CXX object CMakeFiles/drogon.dir/lib/src/HttpSimpleControllersRouter.cc.o
  [ 22%] Building CXX object CMakeFiles/drogon.dir/lib/src/HttpUtils.cc.o
  [ 22%] Building CXX object CMakeFiles/drogon.dir/lib/src/HttpViewData.cc.o
  [ 23%] Building CXX object CMakeFiles/drogon.dir/lib/src/IntranetIpFilter.cc.o
  [ 24%] Building CXX object CMakeFiles/drogon.dir/lib/src/ListenerManager.cc.o
  [ 24%] Building CXX object CMakeFiles/drogon.dir/lib/src/LocalHostFilter.cc.o
  [ 25%] Building CXX object CMakeFiles/drogon.dir/lib/src/MultiPart.cc.o
  [ 25%] Building CXX object CMakeFiles/drogon.dir/lib/src/NotFound.cc.o
  [ 26%] Building CXX object CMakeFiles/drogon.dir/lib/src/PluginsManager.cc.o
  [ 26%] Building CXX object CMakeFiles/drogon.dir/lib/src/RangeParser.cc.o
  [ 27%] Building CXX object CMakeFiles/drogon.dir/lib/src/SecureSSLRedirector.cc.o
  [ 28%] Building CXX object CMakeFiles/drogon.dir/lib/src/AccessLogger.cc.o
  [ 28%] Building CXX object CMakeFiles/drogon.dir/lib/src/RealIpResolver.cc.o
  [ 29%] Building CXX object CMakeFiles/drogon.dir/lib/src/SessionManager.cc.o
  [ 29%] Building CXX object CMakeFiles/drogon.dir/lib/src/StaticFileRouter.cc.o
  [ 30%] Building CXX object CMakeFiles/drogon.dir/lib/src/TaskTimeoutFlag.cc.o
  [ 30%] Building CXX object CMakeFiles/drogon.dir/lib/src/Utilities.cc.o
  [ 31%] Building CXX object CMakeFiles/drogon.dir/lib/src/WebSocketClientImpl.cc.o
  [ 31%] Building CXX object CMakeFiles/drogon.dir/lib/src/WebSocketConnectionImpl.cc.o
  [ 32%] Building CXX object CMakeFiles/drogon.dir/lib/src/WebsocketControllersRouter.cc.o
  [ 33%] Building CXX object CMakeFiles/drogon.dir/lib/src/SharedLibManager.cc.o
  [ 33%] Building CXX object CMakeFiles/drogon.dir/orm_lib/src/sqlite3_impl/Sqlite3Connection.cc.o
  [ 34%] Building CXX object CMakeFiles/drogon.dir/orm_lib/src/sqlite3_impl/Sqlite3ResultImpl.cc.o
  [ 34%] Building CXX object CMakeFiles/drogon.dir/lib/src/RedisClientSkipped.cc.o
  [ 35%] Building CXX object CMakeFiles/drogon.dir/lib/src/RedisResultSkipped.cc.o
  [ 35%] Building CXX object CMakeFiles/drogon.dir/lib/src/RedisClientManagerSkipped.cc.o
  [ 36%] Building CXX object CMakeFiles/drogon.dir/orm_lib/src/ArrayParser.cc.o
  [ 37%] Building CXX object CMakeFiles/drogon.dir/orm_lib/src/Criteria.cc.o
  [ 37%] Building CXX object CMakeFiles/drogon.dir/orm_lib/src/DbClient.cc.o
  [ 38%] Building CXX object CMakeFiles/drogon.dir/orm_lib/src/DbClientImpl.cc.o
  [ 38%] Building CXX object CMakeFiles/drogon.dir/orm_lib/src/DbClientLockFree.cc.o
  [ 39%] Building CXX object CMakeFiles/drogon.dir/orm_lib/src/DbConnection.cc.o
  [ 39%] Building CXX object CMakeFiles/drogon.dir/orm_lib/src/Exception.cc.o
  [ 40%] Building CXX object CMakeFiles/drogon.dir/orm_lib/src/Field.cc.o
  [ 40%] Building CXX object CMakeFiles/drogon.dir/orm_lib/src/Result.cc.o
  [ 41%] Building CXX object CMakeFiles/drogon.dir/orm_lib/src/Row.cc.o
  [ 42%] Building CXX object CMakeFiles/drogon.dir/orm_lib/src/SqlBinder.cc.o
  [ 42%] Building CXX object CMakeFiles/drogon.dir/orm_lib/src/TransactionImpl.cc.o
  [ 43%] Building CXX object CMakeFiles/drogon.dir/orm_lib/src/RestfulController.cc.o
  [ 43%] Building CXX object CMakeFiles/drogon.dir/orm_lib/src/DbClientManager.cc.o
  [ 44%] Linking CXX static library libdrogon.a
  [ 48%] Built target drogon
  [ 48%] Building CXX object examples/CMakeFiles/client.dir/client_example/main.cc.o
  [ 49%] Linking CXX executable client
  /usr/bin/ld: ../libdrogon.a(HttpAppFrameworkImpl.cc.o): in function `drogon::HttpAppFrameworkImpl::loadConfigFile(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)':
  HttpAppFrameworkImpl.cc:(.text+0x1f10): undefined reference to `Json::Value::operator=(Json::Value)'
  /usr/bin/ld: ../libdrogon.a(HttpAppFrameworkImpl.cc.o): in function `drogon::HttpAppFrameworkImpl::loadConfigJson(Json::Value const&)':
  HttpAppFrameworkImpl.cc:(.text+0x1fe0): undefined reference to `Json::Value::operator=(Json::Value)'
  /usr/bin/ld: ../libdrogon.a(HttpAppFrameworkImpl.cc.o): in function `drogon::HttpAppFrameworkImpl::loadConfigJson(Json::Value&&)':
  HttpAppFrameworkImpl.cc:(.text+0x20b8): undefined reference to `Json::Value::operator=(Json::Value)'
  /usr/bin/ld: ../libdrogon.a(HttpRequestImpl.cc.o): in function `drogon::HttpRequestImpl::parseJson() const::{lambda()#1}::operator()() const':
  HttpRequestImpl.cc:(.text+0xc8): undefined reference to `Json::CharReaderBuilder::operator[](std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)'
  /usr/bin/ld: HttpRequestImpl.cc:(.text+0xdc): undefined reference to `Json::Value::operator=(Json::Value)'
  /usr/bin/ld: ../libdrogon.a(HttpRequestImpl.cc.o): in function `drogon::HttpRequest::newHttpJsonRequest(Json::Value const&)::{lambda()#1}::operator()() const':
  HttpRequestImpl.cc:(.text+0x2740): undefined reference to `Json::StreamWriterBuilder::operator[](std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)'
  /usr/bin/ld: HttpRequestImpl.cc:(.text+0x2754): undefined reference to `Json::Value::operator=(Json::Value)'
  /usr/bin/ld: HttpRequestImpl.cc:(.text+0x27b8): undefined reference to `Json::StreamWriterBuilder::operator[](std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)'
  /usr/bin/ld: HttpRequestImpl.cc:(.text+0x27cc): undefined reference to `Json::Value::operator=(Json::Value)'
  /usr/bin/ld: HttpRequestImpl.cc:(.text+0x2850): undefined reference to `Json::StreamWriterBuilder::operator[](std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)'
  /usr/bin/ld: HttpRequestImpl.cc:(.text+0x2864): undefined reference to `Json::Value::operator=(Json::Value)'
  /usr/bin/ld: HttpRequestImpl.cc:(.text+0x28ec): undefined reference to `Json::StreamWriterBuilder::operator[](std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)'
  /usr/bin/ld: HttpRequestImpl.cc:(.text+0x2900): undefined reference to `Json::Value::operator=(Json::Value)'
  /usr/bin/ld: HttpRequestImpl.cc:(.text+0x2960): undefined reference to `Json::StreamWriterBuilder::operator[](std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)'
  /usr/bin/ld: HttpRequestImpl.cc:(.text+0x2974): undefined reference to `Json::Value::operator=(Json::Value)'
  /usr/bin/ld: ../libdrogon.a(HttpResponseImpl.cc.o): in function `drogon::HttpResponseImpl::generateBodyFromJson() const::{lambda()#1}::operator()() const':
  HttpResponseImpl.cc:(.text+0x5d0): undefined reference to `Json::StreamWriterBuilder::operator[](std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)'
  /usr/bin/ld: HttpResponseImpl.cc:(.text+0x5e4): undefined reference to `Json::Value::operator=(Json::Value)'
  /usr/bin/ld: HttpResponseImpl.cc:(.text+0x648): undefined reference to `Json::StreamWriterBuilder::operator[](std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)'
  /usr/bin/ld: HttpResponseImpl.cc:(.text+0x65c): undefined reference to `Json::Value::operator=(Json::Value)'
  /usr/bin/ld: HttpResponseImpl.cc:(.text+0x6e0): undefined reference to `Json::StreamWriterBuilder::operator[](std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)'
  /usr/bin/ld: HttpResponseImpl.cc:(.text+0x6f4): undefined reference to `Json::Value::operator=(Json::Value)'
  /usr/bin/ld: HttpResponseImpl.cc:(.text+0x77c): undefined reference to `Json::StreamWriterBuilder::operator[](std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)'
  /usr/bin/ld: HttpResponseImpl.cc:(.text+0x790): undefined reference to `Json::Value::operator=(Json::Value)'
  /usr/bin/ld: HttpResponseImpl.cc:(.text+0x7f0): undefined reference to `Json::StreamWriterBuilder::operator[](std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)'
  /usr/bin/ld: HttpResponseImpl.cc:(.text+0x804): undefined reference to `Json::Value::operator=(Json::Value)'
  /usr/bin/ld: ../libdrogon.a(HttpResponseImpl.cc.o): in function `drogon::HttpResponseImpl::parseJson() const::{lambda()#1}::operator()() const':
  HttpResponseImpl.cc:(.text+0x446c): undefined reference to `Json::CharReaderBuilder::operator[](std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)'
  /usr/bin/ld: HttpResponseImpl.cc:(.text+0x4480): undefined reference to `Json::Value::operator=(Json::Value)'
  /usr/bin/ld: ../libdrogon.a(PluginsManager.cc.o): in function `drogon::PluginBase::setConfig(Json::Value const&)':
  PluginsManager.cc:(.text._ZN6drogon10PluginBase9setConfigERKN4Json5ValueE[_ZN6drogon10PluginBase9setConfigERKN4Json5ValueE]+0x40): undefined reference to `Json::Value::operator=(Json::Value)'
  /usr/bin/ld: ../libdrogon.a(ConfigLoader.cc.o): in function `loadLogSetting(Json::Value const&)':
  ConfigLoader.cc:(.text+0x76c): undefined reference to `Json::Value::operator!() const'
  /usr/bin/ld: ../libdrogon.a(ConfigLoader.cc.o): in function `loadControllers(Json::Value const&)':
  ConfigLoader.cc:(.text+0xaf4): undefined reference to `Json::Value::operator!() const'
  /usr/bin/ld: ../libdrogon.a(ConfigLoader.cc.o): in function `loadApp(Json::Value const&)':
  ConfigLoader.cc:(.text+0x1130): undefined reference to `Json::Value::operator!() const'
  /usr/bin/ld: ../libdrogon.a(ConfigLoader.cc.o): in function `loadDbClients(Json::Value const&)':
  ConfigLoader.cc:(.text+0x3798): undefined reference to `Json::Value::operator!() const'
  /usr/bin/ld: ../libdrogon.a(ConfigLoader.cc.o): in function `loadRedisClients(Json::Value const&)':
  ConfigLoader.cc:(.text+0x4268): undefined reference to `Json::Value::operator!() const'
  /usr/bin/ld: ../libdrogon.a(ConfigLoader.cc.o):ConfigLoader.cc:(.text+0x49c0): more undefined references to `Json::Value::operator!() const' follow
  collect2: error: ld returned 1 exit status
  make[2]: *** [examples/CMakeFiles/client.dir/build.make:107: examples/client] Error 1
  make[1]: *** [CMakeFiles/Makefile2:209: examples/CMakeFiles/client.dir/all] Error 2
  make: *** [Makefile:156: all] Error 2
hwc0919 commented 2 years ago

The compiler which built your jsoncpp library and the compiler you are using have different ABI. Use your current compiler to build jsoncpp from source.