IMPORTANT: You must compile your extension module with the additional C flag `-G0' (or `-G 0'). This instruct the assembler to generate position-independent code.
You don't need to link the resulting `spammodule.o' file; just copy it into a directory along the Python module search path.
The first time your extension is loaded, it takes some extra time and a few messages may be printed. This creates a file `spammodule.ld' which is an image that can be loaded quickly into the Python interpreter process. When a new Python interpreter is installed, the dl package detects this and rebuilds `spammodule.ld'. The file `spammodule.ld' is placed in the directory where `spammodule.o' was found, unless this directory is unwritable; in that case it is placed in a temporary directory.
If your extension modules uses additional system libraries, you must create a file `spammodule.libs' in the same directory as the `spammodule.o'. This file should contain one or more lines with whitespace-separated options that will be passed to the linker -- normally only `-l' options or absolute pathnames of libraries (`.a' files) should be used.