Split the code into two libraries - libapriltag.so: JUST the core apriltag functionality. Symbols are namespaced for the most part. Symbols not exposed to the outside by default. Only a whitelist is exposed. Most users want this library
- libapriltag-utils.so: All the other stuff. The Apriltag sources provide utility functions for common tasks such as option parsing and jpeg reading/writing, and those are available here. Most notably, the demos need this library. All the symbols are exposed to the outside.