0

我查看了这些链接: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 完全陌生。

非常感谢!

4

3 回答 3

4
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 
于 2013-04-01T14:02:24.413 回答
1

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

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

  gcc a1.c a2.c -o myapp

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

  gcc -c a1.c a2.c

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

  gcc a1.o a2.o -o myapp
于 2013-04-01T14:04:46.030 回答
0

你的 gcc 命令应该是这样的

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

你必须像这样在你的文件中包含a1.ha2.h头文件a1.c

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

如果您正在调用某些函数,a2.c那么a1.c您必须以这种方式构建您的程序

gcc -I/Home/Documents/ctests/ -o a1.out a2.c a1.c
于 2013-04-01T14:04:42.783 回答