I have four files list.h
list.c
test_list.c
Makefile
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*/
Makefile
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
when I input make in shell, here comes the error:
/usr/bin/ld: /usr/lib/debug/usr/lib/i386-linux-gnu/crt1.o(.debug_line): relocation 0 has invalid symbol index 2 /usr/lib/gcc/i686-linux-gnu/4.8/../../../i386-linux-gnu/crt1.o: In function
_start':(.text+0x18): undefined reference to
main' collect2: error: ld returned 1 exit status make: *** [list] Error 1
What is wrong here?
"%.o
rule does the same as the implicit one. But you should probably make one forlist.o
, to add a dependency tolist.h
. – juanchopanza