首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 操作系统 > UNIXLINUX >

makefile的有关问题,找不到main的定义,写错了?

2012-03-27 
makefile的问题,找不到main的定义,写错了??目录client目录:--inluce--src--objsinclude目录:--myStdio.hsr

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函数看看。

热点排行