If i look on ubuntu 18 I see this: /usr/lib/x86_64-linux-gnu/libuuid.a
If I look on ubuntu 22, it's no longer there.
to build firmware with this sort of library, you need the .a (which is for static linking). Somewhat ironic, for UEFI, since the entire DXE model is built on the DLL model, that they can't handle a uuid .so, but so it goes :-)
For reasons I still don't understand, the various linux distros no longer ship .a as part of the library package.
Many tests will indicate that a library is present if they find the .so. But the .so is useless if you need static linking. In parts of the discussion you posted, it looks like people are finding the .so and not realizing they need the .a?
Hence, the policy of distros like ubuntu, to remove .a files that support static linking, is a dagger aimed at the heart of firmware projects.
The weirdest tithing: linux guarantees syscall ABI compatibility that goes back, at this point, the better part of TWO DECADES. So why do these distros remove support for static linking? I never have trouble with kernel ABI, it's the .so ABI that tends to break. IOW, statically linked binaries are more portable than ones that use .so!
Anyway, I think that's your problem. Ubuntu is breaking firmware now, with a poorly thought out change to what is shipped in a package. What about other distros? We might want to recommend people stop trying to build with ubuntu?
Sorry.