c - 源文件找不到头文件

标签 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 完全陌生。

非常感谢!

最佳答案

gcc -c

告诉 gcc 将文件编译为对象(随处可见的 .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 

关于c - 源文件找不到头文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15744803/

相关文章:

winapi - 在VC++中编译并链接CxImage静态库

c - 从与预期最终位置不同的位置链接共享库

android - 为 Android 编译 SDL2

c - 为什么我可以将更长的字符串分配给 C 中的指针?

c - 如何使用 XSL 翻译 C 结构中的 XML 文档

c - 可以在循环的括号内定义循环变量吗?

c - (char*) 0 是什么意思?

c++ - 包含 .cpp 文件而不是 .h 文件以使 vanilla gcc 能够更多地优化我的代码是个好主意吗?

c - 开关盒内循环内的开关盒

c++ - 在多个 VCL 模块中使用命名空间