all: check foo.c: echo 'main() {};' > foo.c bar.c: echo 'bar() { return 0; }' > bar.c libbar.a: bar.o ar cru libbar.a bar.o ranlib libbar.a libbar-script.a: echo 'EXTERN(bar);' > libbar-script.a foo1: foo.o libbar.a gcc -static -o foo1 foo.o -u bar libbar.a foo2: foo.o libbar-script.a gcc -static -o foo2 foo.o libbar-script.a libbar.a check: foo1 foo2 objdump --syms foo1 | grep bar && echo BAR defined in foo1 || echo BAR undefined in foo1 objdump --syms foo2 | grep bar && echo BAR defined in foo2 || echo BAR undefined in foo2 clean: rm -f foo.c bar.c foo.o bar.o libbar.a libbar-script.a foo1 foo2