-
Notifications
You must be signed in to change notification settings - Fork 4k
Description
The current arrow.pc package config file produced is deficient and doesn't properly declare static libraries pre-requisities that must be linked in in order to statically link in libarrow.a
Currently it just has:
Libs: -L${libdir} -larrow
But in cases, e.g. where you enabled snappy, brotli or zlib support in arrow, our toolchains need to see an arrow.pc file something more like:
Libs: -L${libdir} -larrow
Libs.private: -lsnappy -lboost_system -lz -llz4 -lbrotlidec -lbrotlienc -lbrotlicommon -lzstd
If not, we get linkage errors. I'm told the convention is that if the .a has an UNDEF, the Requires.private plus the Libs.private should resolve all the undefs. See the Libs.private info in https://linux.die.net/man/1/pkg-config
Note, however, as Sutou Kouhei pointed out in #5123 (comment) the additional Libs.private need to be dynamically generated based on whether functionality like snappy, brotli or zlib is enabled..
Reporter: Michael Maguire
Assignee: Kouhei Sutou / @kou
Related issues:
- [C++] CMake should collect libs when making static build (relates to)
- [R] Allow Parquet and Arrow Dataset to be optional components (is related to)
PRs and other links:
Note: This issue was originally created as ARROW-6312. Please see the migration documentation for further details.