apache / apache/arrow

Undefined Reference to arrow::ImportRecordBatchReader

Open
#14,020 1 comment 0 reactions 0 assignees View on GitHub
Dominant language
C++
Stars
17.1k
Forks
4.3k
Avg merge
3d 13h
Merged PRs (30d)
88

Description

Hello I am trying to use Arrow in one of my company projects, however I am getting an undefined reference to arrow::ImportRecordBatchReader when trying to use it.

Some context, I was previously using arrow from the following commit (c3d031250a7fdcfee5e576833bf6f39097602c30) and I could use arrow::ImportRecrodBatchReader just fine. However, when I upgraded arrow to a more recent version (13a7b605ede88ca15b053f119909c48d0919c6f8) the undefined reference showed up.

I extracted some pieces of code which might be relevant.

How Arrow is added to the project:
``` cmake
ExternalProject_Add(
ArrowDownload
GIT_REPOSITORY "https://github.com/apache/arrow"
GIT_TAG 13a7b605ede88ca15b053f119909c48d0919c6f8
SOURCE_DIR "${CMAKE_SOURCE_DIR}/third_party/arrow/arrow-9.0.0"
BUILD_BYPRODUCTS
/libarrow.so

CONFIGURE_COMMAND
${CMAKE_COMMAND}
-G${CMAKE_GENERATOR}

#
# Compiler options
#
-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
-DBUILD_WARNING_LEVEL=PRODUCTION
-DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}
-DCMAKE_CXX_COMPILER_LAUNCHER=${CMAKE_CXX_COMPILER_LAUNCHER}
-DCMAKE_CXX_FLAGS=${CMAKE_CXX_FLAGS}
-DCMAKE_CXX_STANDARD=${CMAKE_CXX_STANDARD}
-DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}
-DCMAKE_C_COMPILER_LAUNCHER=${CMAKE_C_COMPILER_LAUNCHER}

#
# Install options
#
-DCMAKE_INSTALL_PREFIX=${THIRD_PARTY_INSTALL_PREFIX}
-DCMAKE_INSTALL_LIBDIR=${CMAKE_INSTALL_LIBDIR}
-DCMAKE_MODULE_PATH=${CMAKE_MODULE_PATH}
-DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE}

#
# Apache Arrow specific options
#
-DARROW_ALTIVEC=OFF
-DARROW_USE_CCACHE=ON
-DARROW_BOOST_USE_SHARED=OFF
-DARROW_BUILD_SHARED=ON
-DARROW_BUILD_STATIC=OFF
-DARROW_BUILD_UTILITIES=OFF
-DARROW_COMPUTE=OFF
-DARROW_DATASET=OFF
-DARROW_FLIGHT=OFF
-DARROW_GFLAGS_USE_SHARED=OFF
-DARROW_HDFS=OFF
-DARROW_IPC=ON
-DARROW_JSON=OFF
-DARROW_CSV=OFF
-DARROW_JEMALLOC=OFF
-DARROW_ORC=OFF
-DARROW_PARQUET=OFF
-DARROW_PROTOBUF_USE_SHARED=OFF
-DARROW_USE_GLOG=OFF
-DARROW_SIMD_LEVEL=NONE
-DARROW_RUNTIME_SIMD_LEVEL=NONE
-DARROW_WITH_BROTLI=OFF
-DARROW_WITH_LZ4=OFF
-DARROW_WITH_PROTOBUF=OFF
-DARROW_WITH_RAPIDJSON=OFF
-DARROW_WITH_SNAPPY=OFF
-DARROW_WITH_ZLIB=OFF
-DARROW_WITH_ZSTD=OFF
-DBOOST_SOURCE=AUTO
/cpp
CMAKE_ARGS -Wno-dev
UPDATE_COMMAND "")

set(ARROW_INSTALL_DIR ${THIRD_PARTY_INSTALL_PREFIX})
set(ARROW_INCLUDE ${ARROW_INSTALL_DIR}/include CACHE INTERNAL "")

set(ARROW_LIBS ${CMAKE_INSTALL_LIBDIR})

add_library(ArrowLib SHARED IMPORTED)
set_target_properties(ArrowLib
PROPERTIES
IMPORTED_LOCATION
${ARROW_LIBS}/libarrow.so
)
```

Extract of the error:
```
undefined reference to `arrow::ImportRecordBatchReader(arrow::ArrowArrayStream*)'
```

If anyone have any idea on why this happens I would appreciate it.

Thanks for your time!

Contributor guide

Open the contributing guide

Research direction

Start with the ExternalProject_Add configuration and the imported ArrowLib target shown in the issue, comparing the two Arrow commits and the generated link command. Inspect whether the built libarrow.so exports arrow::ImportRecordBatchReader and whether the consumer links the matching IPC-enabled library. Done means identifying the build or linkage mismatch and documenting a reproducible correction.

Written by the indexing model from the issue text.

Assessment

Tech stack
cmake, cpp
Domain
build-system
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
28/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.