I use Gentoo as my primary home Desktop OS. I have since ~2004. I appreciate the emerge
command for managing a source based OS as well as it does. Every now and then I check on other distributions, but I'm particularly fond of Linux From Scratch – For those of you Who Don't Know. Granted, I've never been through the entire book because using Gentoo has spoiled me in that respect. I consider Gentoo to be LFS + a Package Manager. I finally decided I'm going to complete the book, so I stuck XUbuntu on a VM to simulate the newness and …
I'm following along in the release candidate for Version 3 – Systemd of CLFS, and it hit me at Chapter 6 – Temporary System – Make. If a user needs make
to compile a version of Make, the Chicken and Egg Causality Problem appears This leads me to my next logical questions.
-
When Stuart Feldman created
make
in 1976, how did the computing public compile his program if their OS did not contain an OS depenentmake
? Am I to assume that the WikiPedia article below is true for every OS? -
Did he have to package make to include every OS dependent version of make to complete 1?(See Below)
-
If I needed Program A, but it was only available to compile on OS A, did I have to buy OS A, even if I use OS B? (Please Ignore
Windows here if Possible.)
Update
- Based on jimmij's comment, Did OS specific compilers exist in the same way that make was OS Dependent?
WikiPedia says:
Before Make's introduction, the Unix build system most commonly
consisted of operating system dependent "make" and "install" shell
scripts accompanying their program's source. Being able to combine the
commands for the different targets into a single file and being able
to abstract out dependency tracking and archive handling was an
important step in the direction of modern build environments.
Also, please note that I am looking for some historical perspective here, as I was born in 1976.
Best Answer
Make is simply for convenience. You can build software without it, it is just more difficult.
When you run
make
to build something, it shows you the commands it is running. You can run those commands manually and get the same effect.Which created a file called
test
.I can get the same result by just doing:
If make didn't exist, you could either instruct users to run this
cc
command by hand, or you could distribute a shell script, and instruct them to run the script.