#include <stdio.h>
と書くと /usr/include/stdio.h を読みこみますよね。
しかしこれに書いてあるのは宣言だけなんですけど、
定義はどこから持ってくるのでしょうか。