First, the computer C is not something you can practically compile on. It may be an embedded device, or even just a production machine you don't want to set up for compiling.
So you have such a 'nix machine. You need to be able to cross compile for it.
What you do have is a build machine. This is B. It is a machine that is fast enough and powerful enough, but it doesn't have a compiler. It doesn't even have a compiler that builds for B, let alone one that builds for C. You want to use it to build stuff for C.
How do you get it? Well, you talk to someone who has a compiler for B, ideally one that cross-compiles to C directly. Then you download it to B, and use it to cross-compile for your bespoke system C.
Where do they get the compiler for B? Odds are their system isn't identical to B. How do they get started?
All they really need is a system, A, with a compiler that compiles programs for A.
Now, this compiler already installed on A might not be able to build cross-compilers. It is just some compiler for a language (like c) that was provided by the vendor or something.
What you need is a cross compiler that can compile binaries for B. To get this, first you take your A to A compiler (your "vendor" compiler), and compile a compiler that supports cross-compiling to B.
Next, you take that compiler, and you have it compile a cross-compiler that compiles from B to C.
Then you distribute that B to C compiler to the person with computers B and C.
Now, this is (and was) a real world problem. You have a microsoft windows machine with a vendor compiler, or a solaris unix machine, or a macOS machine. In all case you can get a compiler, but not a cross compiler, easily. Those vendors have little interest in providing you with cross compilers.
You don't have the computers that everyone who you supply tools to has (B and C). So you bootstrap from your "locked in" system A to the point of being able to build and distribute full sets of pre-built tools for users to download.
The "hard" requirement is that computer A has a compiler that can compile a cross-compiler from B to C; where both the execution instruction set of the compiler and the target instruction set of the compiler are foreign to A.