Our development platforms were FreeBSD and SunOS 4.1.x systems. While non-stand-alone versions of Nachos/486 can be generated and debugged under either environment, FreeBSD is currently the only fully supported development platform capable of generating the stand-alone binaries and bootable disks. Accordingly, we worked primarily on two Intel 486 PC clones running FreeBSD Release 2.0. These PCs are able to run the normal nachos simulation, the stand-alone version, and generate our bootable disks. Cross-compilation of stand-alone binaries from another architecture to the Intel platform or creating a boot environment from another architecture is not presently feasible.
We used the stock gcc compiler that comes with FreeBSD, along with the latest releases of the GNU binutils for object code manipulation. The availability of the source code for the compiler was invaluable, because it allowed us to see exactly what C/C++ runtime support we needed to provide in our code, and how it was done in gcc. It is worth noting that while this was a tremendous help in comprehending the internal processes of putting a C/C++ program into execution, it was also the source of a number of difficulties and often much confusion. A representative example is that in building stand-alone binaries, our special linking rules by-pass the built-in mechanisms for invoking the constructors for global objects.