pitrou commented on a change in pull request #11698: URL: https://github.com/apache/arrow/pull/11698#discussion_r751073171
########## File path: docs/source/cpp/build_system.rst ########## @@ -134,3 +134,32 @@ all available packages: * ``gandiva`` * ``parquet`` * ``plasma`` + +A Note on Linking +================= + +Some Arrow components have dependencies that you may want to use in your own +project. Care must be taken to ensure that your project links the same version +of these dependencies in the same way (statically or dynamically) as Arrow, +else `ODR <https://en.wikipedia.org/wiki/One_Definition_Rule>`_ violations may +result and your program may crash or silently corrupt data. + +In particular, Arrow Flight and its dependencies `Protocol Buffers (Protobuf) +<https://developers.google.com/protocol-buffers/>`_ and `gRPC +<https://grpc.io/>`_ are likely to cause issues. When using Arrow Flight, note +the following guidelines: + +* If statically linking Arrow Flight, Protobuf and gRPC must also be statically + linked, and the same goes for dynamic linking. +* Some platforms (e.g. Ubuntu 20.04 at the time of this writing) may ship a + version of Protobuf and/or gRPC that is not recent enough for Arrow + Flight. In that case, Arrow Flight bundles these dependencies, so case must Review comment: typo: "care" -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: github-unsubscr...@arrow.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org