Please forgive my ignorance, but what does ‘object file’ correspond to
in the Windows world?
Do you mean that if I statically compile SDL into my program, in
addition to the program, I need to toss the SDL.dll somewhere for
them to use if they want?
It means you need to toss your applications object files. Not the SDL
library. The idea is the user has to be able to drop in a replacement
for SDL and your program still works. This is an absolute requirement of
If your program is open source, you don’t need to care because the user
can recompile everything anyways.
If your program is closed source, you have two options:
a) Dynamically link against SDL, so the enduser can simply replace
SDL.dll (or whatever on other platforms). This is the best solution and
b) Statically link against SDL and distribute your object files, so
the user can relink your object files with SDL and recreate your binary.
Object files usually have a .o or .obj suffix, depends on the compiler.
If you use Visual C++, you find your .obj files in the Release folder
together with the .exe. You do not need to distribute the SDL object
files, the user can compile them himself.
However, this second solution is hardly necassary, as statically linking
against SDL doesn’t really provide much of an advantage. On Windows just
drop the SDL[_XXX].dll files into your applications installation folder
and you are set. On Linux I usually tell the enduser to install the SDL
libs from his distro or, if the specific SDL lib is somewhat exotic (not
SDL, SDL_mixer, SDL_image), bundle the shared lib with my application -
basically same procedure as on Windows except one can try to avoid
cluttering the users system with dozens of shared SDL libs.
Additionally you need to distribute the SDL sourcecode with your closed
source application or provide a way the user can get it. Common
practice is to offer a download link if you want to avoid bundling the
sources in your installer (it’s not interesting for the average enduser,
so you might try not to bloat your installer). Refer to the LGPL text
for details on how exactly you need to make the SDL sourcecode
available. Most distributors have some link on their webpage like
"Download library XXX sourcecode here" and do not bundle the code into
the app installer.
I am not a lawyer, so please take the above with care.