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.

On Sat, Jan 7, 2023 at 10:57 PM Rafael Send <flyingfishfinger@gmail.com> wrote:
Actually, that's not quite right. When I "make" from the root directory, it appears not to fully build Tianocore and throws an error saying "UEFIPAYLOAD.fd - no such file or directory". If I enter payloads/externa/tianocore directory and attempt to "make" there as I've done before (I think), I receive the previously mentioned error.

Apologies for the inaccuracy.
R

Am Sa., 7. Jan. 2023 um 22:52 Uhr schrieb Rafael Send <flyingfishfinger@gmail.com>:
Hi,
Thanks for the suggestion. It built in master, then I copied it to the xgcc folder from the fork I'm using. Close, but no dice just yet. I'm now running into a different problem, both on master and on my fork:
Tianocore says it lacks uuid-dev (libuuid-devel). I'm on Ubuntu, and uuid-dev is already installed. What am I missing? It sounds similar to this here: https://www.reddit.com/r/coreboot/comments/kigu2z/uuiddev_libuuiddev_tianocore/ but that doesn't appear to have a resolution that I can see...

Cheers,
Rafael

Am Sa., 7. Jan. 2023 um 15:15 Uhr schrieb Nico Huber <nico.h@gmx.de>:
On 07.01.23 23:53, Rafael Send wrote:
> If I wanted to try your first suggestion, does the toolchain build
> transcend directories? In order to not mix up  trees & versions so far I
> have just checked out the latest master and the version in question into
> two totally separate coreboot folders.

Not automatically, but you can point to the
  .../util/crossgcc/xgcc/bin
directory in $XGCCPATH or add it to your $PATH.

You can also pull out the whole xgcc/ dir, so it doesn't live in a
specific tree checked out.

Nico
_______________________________________________
coreboot mailing list -- coreboot@coreboot.org
To unsubscribe send an email to coreboot-leave@coreboot.org