There is no well-known FREE and OPEN SOURCE tools that can do this for you as of 2011, but a not-very-well-known tool called "callcatcher" created by Caolan does the job beautifully.
First, to download the callcatcher, go to the official website: http://www.skynet.ie/~caolan/Packages/callcatcher.html
It is written in Python. So you may want to install it by becoming a root or use sudo.
To use the tool, you need to change ALL your make files to prepend "callcatcher" to your "gcc/g++" command. For example, in your original Makefile, you have
Now change it to
When you are done compiling, to see which functions is not used, do:
Another caveat is that you cannot compile multiple times at the same time, like this
$(CC) -o main main.c lib1.c lib2.c (This is bad for callcatcher)
Instead you need to change it to something like this, so that you only compile one file at a time, then link it:
$(CC) $(CFLAGS) -c $^
$(CC) -o $@ $(OBJS)