TL; DR No problem if you distribute either source code or compiled binaries for the various supported collections (implementation of ABI + Standard Library).
In general, the latter is considered cumbersome (with reasons), so the leadership.
I trust manual advice as far as I can throw them ... and I urge you to do the same.
This guide addresses the issue of compatibility with ABI: ABI is a complex set of specifications that defines the exact interface of a compiled library. It includes:
- layout layout structures
- function name
- calling functions
- exception handling, runtime information, ...
- ...
See, for example, Itanium ABI for details. Unlike C, which has a very simple ABI, C ++ has a much more complex surface area ... and therefore many different ABIs have been created for it.
In addition to compatibility with ABI, there is also a problem with the implementation of the standard library. Most compilers have their own implementation of the Standard Library, and these implementations are incompatible with each other (for example, they are not the same as std::vector , although they all implement the same interface and guarantees).
As a result, a compiled binary file (executable file or library) can be mixed and compared with another compiled binary code, if both of them were compiled against the same ABI and compatible versions of the standard library implementation.
Greetings: There is no problem if you distribute the source code and compile the client.
Matthieu M.
source share