I was wondering if anyone could provide any advice on how to create and use a dynamic library using gcc on Linux and/or OS X. I've been working on an in-house image viewer application for the CS department over the summer and have been intrigued by my professor's constant exhortations to make sure that my project be extensible as next summer a new student will take up the mantle of the program. One of the ways that I was thinking of doing this was by creating a sort of plugin architecture for the whole program (its not very large so it wouldn't be hard) so that people wouldn't have to rip apart the code in order to do something simple, like support some new image format (simple ones, like .ppm). Does anyone have any advice on how this might be done, or perhaps even better, is anyone able to point me to some resource to see how this kind of thing is achieved?

>> was wondering if anyone could provide any advice on how to create and use a dynamic library using gcc on Linux
They are called shared libraries on those operating systems. Here are some google links.