现在的位置: 首页 > 综合 > 正文

make编译错误

2017年11月26日 ⁄ 综合 ⁄ 共 1464字 ⁄ 字号 评论关闭

今天再看鸟哥的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文件,看看文件名是否写错,很可能,很常见的一个现象就是,误写了多余的空格,导致被视为依赖文件,导致找不到,导致报此错误。
解决办法就很简单,去掉多余的空格即可。

抱歉!评论已关闭.