One compiler was written in machine code. The rest can just use it or other already compiled compiler (including future versions of itself, that can use the already existing version to recompile the new version.)
P.S. Note that most compilers do NOT compile the "high level code" into a machine code, they have 2 components, front-end and back-end. The front-end compiles the code to an intermediate middle language, and the back-end compiles the middle language to machine code.
This ensures that if you have n
languages and m
architectures, you only need n+m
components and not n*m
if you had a compiler per language/machine