【发布时间】:2016-04-19 09:16:57
【问题描述】:
我有四个文件list.hlist.ctest_list.cMakefile
list.h
#ifndef List_H
#define List_H
#endif
/*nothing else*/
list.c
#include "list.h"
#include <stdio.h>
#include <stdlib.h>
/*nothing else*/
test_list.c
#include "list.h"
#include <stdio.h>
int main(){
return 0;
}
/*nothing else*/
生成文件
CC=cc
CXX=CC
CCFLAGS= -g -std=c99 -Wall -Werror
all: list test_list
%.o : %.c
$(CC) -c $(CCFLAGS) $<
test_list: list.o test_list.o
$(CC) -o test_list list.o test_list.o
test: test_list
./test_list
clean:
rm -f core *.o test_list
当我在 shell 中输入 make 时,出现错误:
/usr/bin/ld: /usr/lib/debug/usr/lib/i386-linux-gnu/crt1.o(.debug_line): 重定位 0 有无效的符号索引 2 /usr/lib/gcc/i686-linux-gnu/4.8/../../../i386-linux-gnu/crt1.o:在函数
_start':(.text+0x18): undefined reference tomain' collect2:错误:ld 返回 1 个退出状态 make: *** [列表] 错误 1
这里有什么问题?
【问题讨论】:
-
顺便说一句,您的
"%.o规则与隐式规则的作用相同。但是您可能应该为list.o制作一个,以将依赖项添加到list.h。