Details
-
Bug
-
Status: Resolved
-
Major
-
Resolution: Fixed
-
0.14.1
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 https://github.com/apache/arrow/pull/5123#issuecomment-522771452, the additional Libs.private need to be dynamically generated based on whether functionality like snappy, brotli or zlib is enabled..
Attachments
Issue Links
- is related to
-
ARROW-11735 [R] Allow Parquet and Arrow Dataset to be optional components
- Resolved
- relates to
-
ARROW-7499 [C++] CMake should collect libs when making static build
- Closed
- links to