Using the source, Luke: Compiling Firefox

My PC is one of those dual-cores from about 5 or so years ago with about 4 gigs of RAM and enough hard drive space that I don’t have to worry about running out of room any time soon. I installed the latest UBUNTU as a second operating system (XP is running on another partition), but became dissatisfied with its overly-simple interface and its hard-to-find terminal. In fact, anything that would have been called a menu system seemed impossible to configure. So, I ripped it out and installed Debian. Yeah, the software is always a version or two behind, but at least I have a guarantee of it working.

Except one thing. Debian didn’t seem to come with a web browser I liked. I wanted Firefox, since there will be a chance of syncing the menu system with my other machines. The binary downloaded from the Firefox website wouldn’t start, since it couldn’t find a library that was indeed on my system, it just wasn’t placed where Firefox was looking. So, to me that only meant one thing …

If you want a software to do anything right, you need to compile the source code yourself and build your own binary on the machine it will run on. And that’s one of the powerful advantages of open source software, and it is the whole reason why the source code is freely available. It is an essay in patience, but once it works correctly, it is always worth the extra trouble. In the source code for Firefox, I needed to use ./configure several times. Each time it reported an error of some kind, it was due to a missing package. I installed it using apt-get install <packge-name>, and there were several that were missing. I would suppose the reason so many were missing was because my Linux installation was not configured for “development” purposes (an oversight on my part). But once ./configure ran without error, I was able to do a “make”. And now the wait.

I recall back in the mid-90s, when I first used Linux on a 486, and I was compiling the kernel, I recall it took, on a 80486-DX2-100 processor with maybe 4 megs of RAM, about 5-6 hours to compile a proper kernel. At the time, that was the biggest compilation job commonly done on Linux systems, and was a rite of passage for any computer nerd, and probably still is. Things are easier nowadays with kernel modules in the version 2 and 3 kernels, since compilation is rendered almost un-necessary. Well, about an hour into the compilation of Firefox, it is still chugging away at the compilation of source code — sometimes C/C++, sometimes python, and it seems assembler at times (not sure). On 4 gigs of RAM and a dual-core processor, one would think that I wouldn’t have time to write this article (which is exactly what I am doing while I’m waiting), or at least to write this much verbiage over so long a period. But so far, the good news is that there are no serious compilation errors that would have caused the make to bail out.

Of course, I have better things to do than to compile Firefox and write about it on my blog. I am also roasting a turkey. The turkey will be ready to eat in about two hours from now. It will be interesting to see which will finish first: the turkey or my Firefox compilation. I’ll keep you posted. Right now, it is about time for its basting. The turkey, that is.