Uploaded image for project: 'Apache Arrow'
  1. Apache Arrow
  2. ARROW-8587

[C++] Compilation error when linking arrow-flight-perf-server

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Minor
    • Resolution: Fixed
    • 0.17.0
    • 1.0.0
    • Benchmarking, C++, FlightRPC
    • Linux HP 5.3.0-46-generic #38~18.04.1-Ubuntu SMP Tue Mar 31 04:17:56 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux

    Description

      I wanted to play around with Flight benchmark after seeing the discussion regarding Flight's throughput in arrow dev mailing list today.

      I met the following error when trying to build the benchmark from latest source code:

      [ 95%] Linking CXX executable ../../../debug/arrow-flight-perf-server
      ../../../debug/libarrow_flight_testing.so.18.0.0: undefined reference to `boost::filesystem::detail::canonical(boost::filesystem::path const&, boost::filesystem::path const&, boost::system::error_code*)'
      ../../../debug/libarrow_flight_testing.so.18.0.0: undefined reference to `boost::system::system_category()'
      ../../../debug/libarrow_flight_testing.so.18.0.0: undefined reference to `boost::filesystem::path::parent_path() const'
      ../../../debug/libarrow_flight.so.18.0.0: undefined reference to `deflate'
      ../../../debug/libarrow_flight.so.18.0.0: undefined reference to `deflateEnd'
      ../../../debug/libarrow_flight_testing.so.18.0.0: undefined reference to `boost::system::generic_category()'
      ../../../debug/libarrow_flight_testing.so.18.0.0: undefined reference to `boost::filesystem::detail::current_path(boost::system::error_code*)'
      ../../../debug/libarrow_flight.so.18.0.0: undefined reference to `inflateInit2_'
      ../../../debug/libarrow_flight.so.18.0.0: undefined reference to `inflate'
      ../../../debug/libarrow_flight.so.18.0.0: undefined reference to `deflateInit2_'
      ../../../debug/libarrow_flight.so.18.0.0: undefined reference to `inflateEnd'
      ../../../debug/libarrow_flight_testing.so.18.0.0: undefined reference to `boost::filesystem::path::operator/=(boost::filesystem::path const&)'
      collect2: error: ld returned 1 exit status
      src/arrow/flight/CMakeFiles/arrow-flight-perf-server.dir/build.make:154: recipe for target 'debug/arrow-flight-perf-server' failed
      make[2]: *** [debug/arrow-flight-perf-server] Error 1
      CMakeFiles/Makefile2:2609: recipe for target 'src/arrow/flight/CMakeFiles/arrow-flight-perf-server.dir/all' failed
      make[1]: *** [src/arrow/flight/CMakeFiles/arrow-flight-perf-server.dir/all] Error 2
      Makefile:140: recipe for target 'all' failed
      make: *** [all] Error 2
      
      

      I was using cmake .. -DCMAKE_BUILD_TYPE=Debug -DARROW_DEPENDENCY_SOURCE=AUTO -DARROW_FLIGHT=ON -DARROW_BUILD_BENCHMARKS=ON -DARROW_CXXFLAGS="-lboost_filesystem -lboost_system" to configure the build.
      I noticed that there was a ARROW_BOOST_BUILD_VERSION: 1.71.0 in the output, but the Boost library that I installed from the package manger was of this version: 1.65.1.0ubuntu1. Could this be the cause of the problem?

      PS:
      I was able to build the benchmark before. It was on AWS with the OS being ubuntu-bionic-18.04-amd64-server-20191002, which should be very similar to the one I'm using on my laptop.

      Attachments

        Issue Links

          Activity

            People

              apitrou Antoine Pitrou
              cxma Chengxin Ma
              Votes:
              0 Vote for this issue
              Watchers:
              4 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved:

                Time Tracking

                  Estimated:
                  Original Estimate - Not Specified
                  Not Specified
                  Remaining:
                  Remaining Estimate - 0h
                  0h
                  Logged:
                  Time Spent - 20m
                  20m