Skip to content

[C++] Minimal Arrow Library Contains Undefined Symbols from IPC sources #45512

@WillAyd

Description

@WillAyd

Describe the bug, including details regarding any error messages, version, and platform.

If you disable every option of the C++ build:

$ cmake -S . -B build -DCMAKE_BUILD_TYPE=Debug -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -G Ninja -DARROW_COMPUTE=OFF -DARROW_IPC=OFF -DARROW_JSON=OFF -DARROW_CSV=OFF -DARROW_BUILD_TESTS=OFF -DARROW_FILESYSTEM=OFF -DARROW_BUILD_INTEGRATION=OFF -DARROW_ALTIVEC=OFF
$ cmake --build build

The produced libarrow.so file will contain undefined symbols:

$ objdump -T -C ./build/release/libarrow.so | grep ipc
0000000000000000      D  *UND*	0000000000000000  Base        arrow::ipc::MakeFileWriter(std::shared_ptr<arrow::io::OutputStream>, std::shared_ptr<arrow::Schema> const&, arrow::ipc::IpcWriteOptions const&, std::shared_ptr<arrow::KeyValueMetadata const> const&)
0000000000000000      D  *UND*	0000000000000000  Base        arrow::ipc::IpcReadOptions::Defaults()
0000000000000000      D  *UND*	0000000000000000  Base        arrow::ipc::IpcWriteOptions::Defaults()
0000000000000000      D  *UND*	0000000000000000  Base        arrow::ipc::RecordBatchFileReader::Open(arrow::io::RandomAccessFile*, arrow::ipc::IpcReadOptions const&)

As far as I can tell from the linker, these symbols are required by arrow/compute/expression.cc

This issue was originally noticed in #45441 (comment)

Component(s)

C++

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions