makefile的问题,找不到main的定义,写错了??
目录
client目录:
--inluce
--src
--objs
include目录:
--myStdio.h
src目录:
--mystdio.c
--echo_client.c
目录,有一个.h文件,两个.c文件,
mystdio.c include了incule/mystdio.h
echo_client.c include了incule/mystdio.h
main函数在echo_client.c里
下面是我的makefile,放在client目录下:
CC = gcc
OBJ_DIR = ./objs
SRC_DIR = ./src
INC_DIR = ./include
EXE = $(OBJ_DIR)/client
OBJS += $(OBJ_DIR)/myStdio.o \
$(OBJ_DIR)/echo_client.o
EXE:$(OBJS)
$(CC) $^ -o $@
cp $(EXE) ./
$(OBJ_DIR)/%.o:$(SRC_DIR)/%.c
$(CC) $^ -o $@
clean:
rm -rf $(OBJ_DIR)./%.o $(EXE)
make出错:
/usr/lib/gcc/i686-redhat-linux/4.4.2/../../../crt1.o: In function `_start':
(.text+0x18): undefined reference to `main'
collect2: ld returned 1 exit status
make: *** [objs/myStdio.o] Error 1
请达人帮看一下,makefile哪里写得有不对
------解决方案--------------------$(OBJ_DIR)/%.o:$(SRC_DIR)/%.c
这句,还有相关的变量不能直接使用 %.o %.c
不能这样写。
你需要把该目录下的文件生成一个清单,
在清单中使用 %.o
%.c
------解决方案--------------------已经到link阶段了,应该不是编译问题。
crt1.o中的入口函数_start会引用main的地址,貌似没有找到main的地址,所以报错。
楼主可以贴一下你的main函数看看。