Building such a "true" library generally means putting each function that might not be needed in a separate source file, I think.
I don't think so. Building a .a file requires use of tools you don't normally encounter in typical compilation, though. ar for sure, to create the library, and possibly ranlib depending on your platform. Then if you go with a shared library there are still more steps to get a .so from the .a, but that's beyond the scope of avr-gcc/atmel/arduino.
If you don't have a .a file, you don't have a library.
Now, if you
do have every function in a separate .o file,
and only link the .o files you need, then you are pretty much manually handling what the linker will do automatically if you have a library.
-j