?

Log in

No account? Create an account
SGI Octane

Compiling

Posted on 2010.02.25 at 15:35
Current Location: 75070
Current Music: Interzone, Inc - n3Xt
Tags: , ,

Officially (and by that I mean paraphrased from Wikipedia) A compiler is a computer program that transforms source code written in a computer language into another computer language to [most commonly] create an executable program via lexical analysis, preprocessing, parsing, semantic analysis, code generation, and code optimization.

Unofficially, its a huge pain in the ass.

We've come light-years since compiling (and to a greater degree patching) unix systems, as "back in the day" we were required to read every release note of every new patch bundle, and their dependencies, compare them to which patches were currently on our systems, and the impact the patch would have before individually applying them in the correct order. This was your father's 'apt-get update all'

Just because you installed ubuntu on your desktop doesn't make you a sysadmin.

Silicon Graphics (SGI) was head-and-shoulders above the rest by providing an in-browser, auto-extracting patch (and software) hyperlink with required dependencies listed. But even then, that was providing pre-compiled binaries, and assuming you were on a system with a head (monitor & input device). Compiling source code before GNU's (recursive acronym - "GNU's Not Unix") C-compiler was readily available heterogeneously was also very expensive, with gcc being free and (as an example) Sun's compiler being thousands of dollars.

What's the atheist version of an Evangelist?

Now-a-days, for various reasons (higher threat of security, notably) mass-patching is the preferred execution, and with whole repositories of online, pre-compiled binaries able to intelligently calculate and install auto-dependencies, everything I've just said has mostly been pushed aside for the daily system administrator. Mostly.

The mostly come at night.

And while I wasn't an early-adopter of GNU or linux spending my time instead on big-iron operating systems, but since drax0r, resident genius is gone, linux support has fallen more or less to me. And we had a user who, as root (don't get me started) removed 'elfutils' that is to say, the operating system's primary understanding of how to make executables work for its architecture, as well as all its dependencies. All 126 of them. Including the installer software itself. Undaunted, I set about compiling, from scratch, a new installer in which to quickly bring the system back up to install other software.

And now, compiling for you, the layman:
*Download means - aquire, xfer, move, decompress & inflate.
*configure (Look at the environment/architecture you're in and prep code for compilation)
*make (Compile the executable binary for this system based on your information above)
*make install (Move everything into place and link it)



  • Download [primary installation program]

    • ./configure [primary installation program]

      • HA HA! No way! You need [dependency #1]

        • Download [dependency #1]

          • ./configure [dependency #1]

            • HA HA! No way! You need [dependency #2,3,4...ad nauseum]

            • ...

            • ...

              • make [dependency #1,2,3...]

              • ...

              • ...

                • make install [dependency #1,2,3...]

                • ...

                • ...

    • ./configure [primary installation program]

      • make [primary installation program]

        • HA HA! No way! Your shit is broke somehow.

          • (symbolically link random files while truncating names)

        • make [primary installation program]

          • HA HA! No way! Other shit is broken now.

            • Download [some random library]

              • ./configure [some random library]

                • HA HA! No way! You need [some archaic library]

                  • Download [some archaic library]

                    • ./configure [some archaic library]

                      • make [some archaic library]

                        • make install [some archaic library]

              • ./configure [some random library]

                • make [some random library]

                  • make install [some random library]

        • make [primary installation program]

          • WTF? Who wrote this crap? Illegal request - Bye!



I worked on this 10-hours a day for 2-days until I ran across this on the SUSE Enterprise site (Novell):

WARNING: Do not experiment with system components (glibc, rpm, sysvinit, etc.), as this endangers the operability of your system.

/FAIL

We rebuilt the system and restored from backups.

Comments:


Tomas Gallucci
schpydurx at 2010-02-25 22:07 (UTC) (Link)
Your stupidity (as well as the stupidity of your users) is not my responsibility. The fact that you're not a programmer doesn't mean that programming is retarded or that programmers should stop programming. Even if you want to talk about Java/Perl/Python/.NET/Ruby/etc. other people's code and library code need to be bound together. This is the job of the complier/linker.

You think you have it bad now; what if this were pre-make days and you had to compile and link each file by hand?

In short, quit your bitching. Read more, do more, understand more, but quit your fucking bitching.

Thanks.
ehowton
ehowton at 2010-02-25 22:52 (UTC) (Link)
lol
CeltManX, Devlin O' Coileáin
celtmanx at 2010-02-26 05:27 (UTC) (Link)
Y
Samantha
thesweetestnote at 2010-02-26 06:23 (UTC) (Link)
N
Samantha
thesweetestnote at 2010-02-26 06:25 (UTC) (Link)
EXT. DAY TIME. IN ALLEY WAY

Stands from afar and cracks open a can of beer....sips

Yep...
ehowton
ehowton at 2010-02-26 12:50 (UTC) (Link)
Yep.
CeltManX, Devlin O' Coileáin
celtmanx at 2010-02-26 13:50 (UTC) (Link)
Y!!!
ehowton
ehowton at 2010-02-27 04:10 (UTC) (Link)
Y not?
Tomas Gallucci
schpydurx at 2010-02-26 17:08 (UTC) (Link)
Just because you installed ubuntu on your desktop doesn't make you a sysadmin.
While that may be the case, I can speak to this from personal experience: my company has a Debian version of our product. We use aptitude to install packages. An install literally consists of making sure I have access to the correct repositories and then installing the three pieces of software that we need to make the program run. Aptitude takes care of pulling in all those dependencies.

I highly recommend the Debian approach.
Samantha
thesweetestnote at 2010-02-26 19:25 (UTC) (Link)
I highly recommend the Debian approach

Does that involve the anus in anyway? You need to penetrate deeply...and stimulate the clitoris simultaneously. That's what you gotta do. That's what it's about. If you can involve the anus in that, then that's absolute
perfection.


Got it?
CeltManX, Devlin O' Coileáin
celtmanx at 2010-02-26 21:45 (UTC) (Link)
You butchered the Aliens quote. It's they mostly come out at night not "The mostly come at night." Which leads us to my Y comment. That is why I commented "Y". I had a humorous exchanged all planned out but now it is ruined, ruined I say. All for not.
Tomas Gallucci
schpydurx at 2010-02-26 21:47 (UTC) (Link)
That ehowton is a real bastard.
alyssa
dreamkatch at 2010-02-26 21:47 (UTC) (Link)
blah blah blah blah blah blah blah

ehowton
ehowton at 2010-02-26 21:51 (UTC) (Link)
Excellent example of one of my compile dialogs!
ehowton
ehowton at 2010-02-27 17:43 (UTC) (Link)
Previous Entry  Next Entry