在ubuntu上编译多个C文件的有关问题

在ubuntu下编译多个C文件的问题
首先,我写了n1.c和n2.c两个C文件,希望n2.c能用n1.c里面的函数。我用的ubuntu系统。我在终端进入到文件所在目录下输入make之后,终端返回如下

student@wishma-VirtualBox:~/work$ make n1 n2
cc n1.o -o n1
cc n2.c -o n2
貌似是编译出了个.o文件。但是n2还是不能用n1里的函数。我从网上查了,貌似需要.h文件。
第一,这个n1.h文件是自己写还是自动生成?
第二,如何生成?
第三,要让n1和n2组合成一个完整的可执行程序都需要什么文件?.c、.o、.h这些吗?还是别的?

请经验人士作答。半知半解的不要回答。

------解决方案--------------------
自己写.h文件 .h文件中放的是函数的声明,n1.c中是函数的实现。在n2.c中包含你写的.h文件,这样就能用n1.h中的函数了。分别编译两个.c文件,产生两个目标文件,最后链接它们就行。
------解决方案--------------------
探讨

自己写.h文件 .h文件中放的是函数的声明,n1.c中是函数的实现。在n2.c中包含你写的.h文件,这样就能用n1.h中的函数了。分别编译两个.c文件,产生两个目标文件,最后链接它们就行。

------解决方案--------------------
gcc n1.c n2.c -o app
------解决方案--------------------
第一,这个n1.h文件是自己写还是自动生成?

上面说了 自己写。

第二,如何生成?
上面说了 自己写

第三,要让n1和n2组合成一个完整的可执行程序都需要什么文件?.c、.o、.h这些吗?还是别的?

从代码到可执行文件大致经过 编译,汇编,链接。当然这只是简单的步骤分类。对你理解来说够了。

用gcc命令行可以从两个.c文件直接生成可执行文件。中间的步骤都直接执行了,中间文件没给你列出来。
gcc n1.c n2.c 就行了,执行这一句就可以生成可执行文件 a