gcc really handles object files from left to right. When you
gcc -o test libprintf.a main.o
gcc libprintf.a. , libprintf.a. main.o, , printf , , printf, in main.o.
, :
gcc -o test main.o libprintf.a
, , main.o, printf, - libprintf.a, printf. libc , printf , printf libc .
.o :
gcc -o test main.o printf.o
libc , , printf (-) , .
libprintf.so libc , . , , - *.so . libprintf.so libc.so, printf libprintf.so.
gcc -o test libprintf.so main.o
gcc -o test main.o libprintf.so
:
gcc -o test main.o -lc libprintf.so
, printf libc.so libprintf.so, -lc libprintf.so .