我看过这些链接:This one 和This 以及其他几个类似的。 这里给出的答案都没有,工作方法正在发挥作用。
我有两个源文件a1.c
,a2.c
和两个头文件a1.h
和a2.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也是全新的。
非常感谢!
答案 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.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