我写了一个非常简单的c代码,如下所示:
#include<stdio.h>
int sum(int x ,int y);
int mult(int x, int y);
int div(int x , int y);
int main()
{
int a,b,s,m,d;
system("clear");
a =20;
b =40;
s=sum(a,b);
m=mul(a,b);
d=div(a,b);
printf("\n the sum of given no. = %d\nThe product of given no. = %d\nThe division of given no = %d",s,m,d);
return 0;
}文件名为exp.c,然后我编写以下代码:
#include<stdio.h>
int sum( int x ,int y)
{
int z;
z=x+y;
return z;
}我将它保存为sum.c,然后编写以下代码:
#include<stdio.h>
int mult( int z ,int u)
{
int v ;
v=z*u;
return v;
}将它保存为mul.c,然后我编写以下代码
#include<stdio.h>
int div (int a, int b)
{
int f;
f=a/b;
return f;
}将其保存为div .c
我想使用所有文件作为一个单一的项目。我希望exp.c使用mul.c,div.c,sum.c中定义的函数。所以我写了一个makefile的项目,如下所示:
fun : exp.c
gcc exp.c
exp.c : sum.o mul.o div.o
sum.o :sum.c
gcc -c sum.c
mul.o :mul.c
gcc -c product.c
div.o : div.c
gcc -c div.c现在我的问题是,我运行make命令,我得到了以下错误:
exp.c:(.text+0x31): undefined reference to `sum'
exp.c:(.text+0x43): undefined reference to `mult'我哪里做错了?
我需要头文件吗?
没有头文件我该怎么做呢?
如何在没有make文件的情况下执行程序?
如何使用gcc-o sum.c mul.c,div.c命令来运行项目?请给我详细的描述
发布于 2011-04-27 13:41:51
简单的方法:
fun:
gcc -o fun exp.c sum.c div.c product.c冗长的方式:
fun: exp.o sum.o mul.o div.o
gcc -o fun exp.o sum.o mul.o div.o
%.o: %.c
gcc -c $< -o $@第二个方法神奇地接受任何.c文件,并将它们编译成正确的.o文件,这样就不需要为每个新文件创建新的目标。
发布于 2011-04-27 13:43:34
考虑到依赖关系,让我们回顾一下您的流程:
你告诉gcc把div,mul (.o).
问题是,当您提供(1)中生成的对象文件(2)时,您并没有向gcc提供这些文件。您告诉它只编译exp。这就是函数链接失败的原因。
将所有内容编译成.o,然后使用所有生成的对象作为参数运行gcc,而不仅仅是主源文件。
发布于 2011-04-27 13:45:26
这是你程序的make文件
all: exp.c sum.o mul.o div.o
gcc -o exp exp.c sum.o mul.o div.o
sum.o: sum.c
gcc -o sum.o -c sum.c
mul.o: mul.c
gcc -o mul.o -c mul.c
div.o: div.c
gcc -o div.o -c div.c在此之后,您必须通过执行命令来运行您的程序
make allhttps://stackoverflow.com/questions/5799820
复制相似问题