I have an application, say "Whisperfish", with a whole bunch of dependencies. It depends on libsqlite3-sys, which builds sqlcipher (a C project with almost the same ABI as sqlite) and statically links it. Whisperfish also depends on libmozembed, a dynamic library, and that has libsqlite3 as transitive dependency.
Now, it seems that my static sqlcipher provides and resolves most (but not all) symbols of mozembed's libsqlite3. How can I teach Rust or some intermediate C compiler that it should not resolve the sqlcipher symbols for libmozembed? I think it would be desirable to have these sqlcipher symbols all as private, but I'm not sure how this works.
On Matrix, someone suggested to mangle all of sqlcipher, but I have no idea how to approach that. My Google foo doesn't seem to help me either. I've also read about version maps in ld, which would presumably also help, but I cannot find how to add a version map.