源文件找不到头文件

时间:2013-04-01 13:55:02

标签: c gcc linker ubuntu-12.04 header-files

我看过这些链接:This oneThis 以及其他几个类似的。  这里给出的答案都没有,工作方法正在发挥作用。

我有两个源文件a1.ca2.c和两个头文件a1.ha2.h。我想在这两个文件中包含头文件(和a1.c中的a2.c,因为我需要在a2.c中使用一个函数)

我已经包含了

#include "a1.h"  
#include "a2.h"

在a1.c

的源文件中

我在Ubuntu上使用GCC。并使用命令gcc a1.h -o a1.out -lm 那没用。

我试过

gcc -c -I/Home/Documents/ctests/ a1.c -o a1.out

以及

gcc -c a1.c -I/Home/Documents/ctests/ -o a1.out

我的拼写也没问题(那里几乎没有任何错误的空间,无论如何都有一个字母和一个数字作为文件名)。

此外,所有文件都在同一个文件夹中。

我知道这可能是一个微不足道的问题,但我仍然坚持这一点,并希望得到任何帮助。就使用命令行而言,我对编程相对较新,对Linux和Unix也是全新的。

非常感谢!

3 个答案:

答案 0 :(得分:4)

gcc -c

告诉gcc将文件编译为object(你到处看到的.o文件)。稍后将其他一些.o文件链接到可执行文件。

所以你要做的就是分别编译这两个文件并在以后链接它们。像这样。

gcc -I"/Home/Documents/ctests/" -c a1.c
gcc -I"/Home/Documents/ctests/" -c a2.c

gcc -o myprogram a1.o a2.o 

或者只是同时编译和链接。

gcc -I"/Home/Documents/ctests/" a2.c a1.c -o myprogram

然后像

那样运行你的程序
path_to/myprogram 

答案 1 :(得分:1)

编译所有内容,并将其链接在一起。

如果所有文件都在一个目录中,这应该有效:

  gcc a1.c a2.c -o myapp

如果要创建单独的目标文件,请执行以下操作:

  gcc -c a1.c a2.c

然后,您可以链接在一起创建一个应用程序:

  gcc a1.o a2.o -o myapp

答案 2 :(得分:0)

你的gcc命令应该是这样的

gcc -I/Home/Documents/ctests/ -o a1.out a1.c

您必须在a1.h中加入a2.ha1.c标题文件

#include "a1.h"
#include "a2.h"

如果您在a2.c中调用a1.c中的某个功能,那么您必须以这种方式构建您的程序

gcc -I/Home/Documents/ctests/ -o a1.out a2.c a1.c
相关问题