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