However, the main issue is: Lazarus is VERY strict about .ppu & .o files 
Basically, we need to compile our component for each OS and Lazarus version!!!
I wish the Lazarus development team would add a universal solution for this feature in future updates....
Can they?!
No, that simply does not work. Dynamic packages will only work with the exact same version of RTL and compiler, because these things depend on each other. For example if one version had a method
Foo with an
Integer argument, but the next version changed that to a enum, then things would crash, thus the compiler and RTL must make sure that it's not possible or at least not trivial to mix and match versions to avoid unnecessary support burden.
Also FPC compiles to
binary code, so you simply can't use a binary compiled for platform X on platform Y (emulation doesn't count).
If you want
Write Once, Run Anywhere then use something that's intended for that like Java, .NET or interpreted languages. FPC is
Write Once, Compile Anywhere.