I link using gcc and -nostdlib plus a very simple start.S:
.globl _start
_start:
call main
movl $1,%eax
xorl %ebx,%ebx
int $0x80
fasm 1.asm;gcc -nostdlib start.S 1.o lib1.a;a.out"lib1.a" contains only the functions needed by a.out instead of, e.g., every function in libc.a
I use ar -M (Did I forget about crt0.o?)