The root of most of these issues is the fact C/C++ has no package manager and central repo. If you want to build a fully Rust program, its trivial. As soon as it requires something C based you now have to track down the things it needs. And the build tools don't even know what is required. They just attempt to build and spit out some unintelligible error you have to search to find the stack overflow post telling you what package is needed and the 10 different names it has on different OSs.
Thankfully the problem is getting better. Most languages now have a central package repo as well as killing off dynamic linking so the distro maintainers don't attempt packaging libraries.