I'm very good at programming in C++ but when it gets to linking and the other important stuffs I feel very ignorant. I want to learn allegro without wasting time. So please suggest a book or a resource to learn the concepts mentioned above. Thanks a lot in advance.

  • 2
    I recommend you download the autoconf manual, print it out, and burn it. – Joey Adams Nov 13 '10 at 22:30
  • @Joey Adams: I want to +1 that comment, but I can't tell if you're advocating its use or its abolition. :P – greyfade Nov 13 '10 at 23:12
  • autoconf is good for what its meant to be used for... – alternative Nov 14 '10 at 20:25

I wouldn't spend time on any book. There's really not much knowledge here.

Use Wikipedia, Google, and unix man to

  1. Understand what make is (file stamp driven dependency aware synthesizer of whatever). Use GNU Make manual as a reference as you go. The important flags of GNU Make to be aware of are '-p', '-n', and '-d'
  2. Read about gcc/g++ flags for compiling/linking shared/static debug/optimized 32/64-bit modes. Read what LD_LIBRARY_PATH, LD_PRELOAD, position independent code, and rpath are.
  3. Learn what nm, c++filt, strings, and ldd are. You will need to use them to debug build problems.

This is more or less it.


Understand make, and it will be your best friend.

Make is a kind of dataflow system. In a dataflow system you build the application from components, by connecting their input and output ports, where they send messages (data packets, or sometimes only triggers), so they finally form a processing network. See Wikipedia dataflow programming and flow-based programming articles.

In the case of make, the components are the compilation units, the messages are changes of files (source, object, other resource). When a file changes, it triggers a component (a compiling node), then the component, after doing its task, producing outputs, and triggering other components, which are doing same way, until the message chain reaches the final (sink) component, which produces a.out.

Opposite to other dataflow architectures, make does not run continuously. you have to launch it, when you feel that a file has changed, and it will trigger a component. If you run make when there's no changed files, so no component will be triggered, it says a "nothing to do" message and stops.

If there're parallel paths in the dataflow net, make can run components parallel, try make -j option. (It's an interesting effect that the G++ itself does not utilize multiple processors, but it does with the help of make.)

Making a good makefile is not trivial, but if you think of make as a dataflow application builder, it can be a very effective tool.


You don't have to learn autoconf and make files and all that stuff in order to get started under Linux. You can still use an IDE such as Eclipse, which will generate all the autoconf stuff for you automatically.

Eventually, you probably will want to learn it, but you don't have to if you're just starting out. Eclipse will be able to 90% of the stuff you need via it's GUI and wizards, etc.

For example, this page explains how to get started with Allegro under Eclipse. That page does appear to make some assumptions about your knowledge of Linux, but I'm sure with a bit of googling you should be able to find some more thorough references (that was just the first page I found).

  • I thought the OP was reusing the musical term (brisk, fast) in a different context when he said allegro - I didn't know it was a library! – talonx Nov 14 '10 at 6:46
  • @Talonx: hehe, I think that's actually where the name of the library comes from, too... – Dean Harding Nov 14 '10 at 7:56
  • You're right - alleg.sourceforge.net/latestdocs/en/readme.html – talonx Nov 14 '10 at 10:24

Linkers and Loaders by Levine was very good. We use this textbook at OSU in our Assembler, Linker, Loader, Compiler Design course.

link here to amazon

  • Thanks for your response. I'll check it out! But all the linux stuff seems very complicated to me; i'm new to the environment. Should I learn linux or stick to IDEs and windows? – Alexander Suraphel Nov 13 '10 at 20:38
  • Sorry my browser can't load the page to the book. Can you mention the name? – Alexander Suraphel Nov 13 '10 at 21:02
  • 1
    It's up there in the first sentence. – Barry Brown Nov 13 '10 at 21:08
  • @Barry sorry. I missed it! – Alexander Suraphel Nov 13 '10 at 21:51
  • Just looking at the description, the book seems to focus on the theory of linking and loading programs. I think the OP is after practical advice on how to build and use make files (and the like)... is that not the case? – Dean Harding Nov 14 '10 at 1:57
I want to learn allegro without wasting time.

conflict detected.

if you want to develop a game without wasting time, start with a complete game engine like Quake

[yes, i've used Allegro.]

Not the answer you're looking for? Browse other questions tagged or ask your own question.