Building a Hubris application image is somewhat involved, mostly because it combines a bunch of separately compiled programs.
I recently took a deep dive into the process, and came out the other end with a new implementation of it. I took notes along the way, which I've organized into a blog post.
Read on to find out more about our "build system" (really: linker) requirements!
@cliffle It's crazy to me how the seemingly least complex use case in programming - producing a relocatable standalone binary that runs on hardware - is such a PITA to set up.
Thanks for writing down all these pain points. Contains lots of valuable signal for people looking to improve things on the osdev front.
@dist1ll my main piece of advice for osdev folks is to give up on "just use the linker" very early. It doesn't do what you want.
Working in a language like Rust where running host-compiled code during a cross-compile build is normal, and where things like "load and parse the ELF files" is easy, makes a huge difference. I've done similar stuff in C+Makefiles in the past and uuuuuughhhh do not recommend