make编译错误

今天再看鸟哥的Linux私房菜时遇到的make编译错误,5个文件如下所示

main.c

#include <stdio.h>
#define pi 3.1415926
char name[15];
float angle;

int main(void)
{
	printf ("\n\nPlease input your name: ");
	scanf  ("%s", &name );
	printf ("\nPlease enter the degree angle (ex> 90): " );
	scanf  ("%f", &angle );
	haha( name );
	sin_value( angle );
	cos_value( angle );
}
haha.c

#include <stdio.h>
int haha(char name[15])
{
	printf ("\n\nHi, Dear %s, nice to meet you.", name);
}
sin_value.c

#include <stdio.h>
#define pi 3.1415926
float angle;

void sin_value(void)
{
	float value;
	value = sin ( angle / 180. * pi );
	printf ("\nThe Sin is: %5.2f\n",value);
}

cos_value.c

#include <stdio.h>
#define pi 3.1415926
float angle;

void cos_value(void)
{
	float value;
	value = cos ( angle / 180. * pi );
	printf ("The Cos is: %5.2f\n",value);
}


错误的makefile文件,把main.o文件名写为mian.o了

main: mian.o haha.o sin_value.o cos_value.o
	gcc -o main -lm main.o haha.o sin_value.o cos_value.o
导致出现如下报错:

[root@bogon tmp]# make
make: *** No rule to make target `mian.o', needed by `main'.  Stop.

改好后正常

[root@bogon tmp]# make
cc    -c -o main.o main.c
cc    -c -o haha.o haha.c
cc    -c -o sin_value.o sin_value.c
sin_value.c: In function ‘sin_value’:
sin_value.c:8: warning: incompatible implicit declaration of built-in function ‘sin’
cc    -c -o cos_value.o cos_value.c
cos_value.c: In function ‘cos_value’:
cos_value.c:8: warning: incompatible implicit declaration of built-in function ‘cos’
gcc -o main -lm main.o haha.o sin_value.o cos_value.o

总结下,如果使用make命令时出现:make: *** No rule to make target ` ‘, needed by xxx. Stop.
的错误,那么基本上都是属于找不到所依赖的文件所导致的,所以应该去:
1.确认所依赖的文件,是否真实存在。
2.检查mkefile文件,看看文件名是否写错,很可能,很常见的一个现象就是,误写了多余的空格,导致被视为依赖文件,导致找不到,导致报此错误。
解决办法就很简单,去掉多余的空格即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值