C或C++外部调用函数解决思路

C或C++外部调用函数
main.c  和max.c两个文件
main.c代码如下

 #include <stdio.h>

int main()
{
     extern int max (int ,int );
     int a,b;
    scanf("%d",&a);
    scanf("%d",&b);
   printf("%d",max(a,b));
   return 0;
}

max.c代码如下

int max( int x, int y)
{
    int z;
   z=x>y?x:y;
   return z;
}

          如果将两个文件添加到同一个工程中,可以运行。但是能不能将它们分别编译后执行啊?
我用mingw用gcc -c max.c命令将max.c编译成max.o文件,用gcc -c main.c将main.c也编译成main.o文件,但是下面就不行了,main.c没办法生成可执行文件,underfined reference to 'max'。。。
     这个错误是不是因为没有#include <max.h>啊?还是根本不能这样做?不是太懂这里面的原理,希望可以帮我解决这个问题并科普一下
   
------解决思路----------------------
mian中找不到max函数,max函数声明一个放到max.h,main文件包含max.h
------解决思路----------------------
gcc编译的时候写清楚文件依赖关系就可以的,比如
gcc -o main main.o max.o
------解决思路----------------------
1. 创建一个max.h文件
2. #include <stdio.h>
3. int max( int x, int y);
保存。
max.c和main.c中增加#include"max.h"

------解决思路----------------------

文件 1
#include<stdio.h>
void myprint()
{
printf("this is my lib!\n");
}

文件 2
/*************************************************************************
    > File Name: main.c
    > Author: jukay
    > Mail: hellojukay@163.com 
    > Created Time: 2014年12月23日 星期二 20时02分14秒
 ************************************************************************/

#include<stdio.h>
#include"mylib.h"
int main()
{
myprint();

return 0;
}

sudo gcc main.c 
jukay@jukay-desktop:/pragram/p8$ ./a.out
this is my lib!jukay
@jukay-desktop:/pragrame/p8$