当前位置: 技术问答>linux和unix
写makefile的高手,能否帮我看下~~~~斑竹~
来源: 互联网 发布时间:2016-06-11
本文导语: 环境是在aix 64位下面,,目前make是这个错误 $ make make checkbin from dependencies.ot find a rule to create target checkbin Stop. make: 1254-004 The error code from the last command is 2. Stop. 不明白什么意思 ----...
环境是在aix 64位下面,,目前make是这个错误
$ make
make checkbin
from dependencies.ot find a rule to create target checkbin
Stop.
make: 1254-004 The error code from the last command is 2.
Stop.
不明白什么意思
---------------------------------------------------------------------------------
具体 makefile
缩减版
CFLAG=-DDEBUG
CLINK=-lpthread -lbsd -liconv
OBJPATH=.
CC=gcc -g
LIBDIR=./lib
USRLIB=$(LIBDIR)/lib.a
#CFLAGS = -ggdb -D_REENTRANT -Wall
SYBASELIBS = -lodbc
#OBJC_INCLUDE_PATH=$(HOME)/scms_code/obj
BIN_DIR=./bin
LIB=./lib
COM=./com
MAKEFILE=makefile
EXESCMSNAME=scms
OBJSCMS=error.o userlist.o
EXESCMS= $(BIN_DIR)/$(EXESCMSNAME)
up:
make checkbin
make $(EXESCMS)
make clean
checkbin:
if [ -d $(BIN_DIR) ]; then
echo $(BIN_DIR) exist;
if [ -f $(EXESCMS) ]; then
rm $(EXESCMS);
echo rm old $(EXESCMS);
fi
else
mkdir $(BIN_DIR);
echo mkdir $(BIN_DIR) OK;
fi
clean:
rm -f *.o
$(EXESCMS):$(OBJSCMS)
$(CC) -o $(EXESCMS) $(OBJSCMS) $(CFLAG) $(CLINK) $(SYBASELIBS)
@echo $(EXESCMSNAME) "MAKED!"
userlist.o: $(DB)/userlist.c
$(CC) -c -I$(LIBDIR) $(DB)/userlist.c $(CFLAG) -o $(OBJPATH)/userlist.o
#lib
error.o:$(LIB)/error.c
$(CC) -c -I$(LIBDIR) $(LIB)/error.c $(CFLAG) -o $(OBJPATH)/error.o
$ make
make checkbin
from dependencies.ot find a rule to create target checkbin
Stop.
make: 1254-004 The error code from the last command is 2.
Stop.
不明白什么意思
---------------------------------------------------------------------------------
具体 makefile
缩减版
CFLAG=-DDEBUG
CLINK=-lpthread -lbsd -liconv
OBJPATH=.
CC=gcc -g
LIBDIR=./lib
USRLIB=$(LIBDIR)/lib.a
#CFLAGS = -ggdb -D_REENTRANT -Wall
SYBASELIBS = -lodbc
#OBJC_INCLUDE_PATH=$(HOME)/scms_code/obj
BIN_DIR=./bin
LIB=./lib
COM=./com
MAKEFILE=makefile
EXESCMSNAME=scms
OBJSCMS=error.o userlist.o
EXESCMS= $(BIN_DIR)/$(EXESCMSNAME)
up:
make checkbin
make $(EXESCMS)
make clean
checkbin:
if [ -d $(BIN_DIR) ]; then
echo $(BIN_DIR) exist;
if [ -f $(EXESCMS) ]; then
rm $(EXESCMS);
echo rm old $(EXESCMS);
fi
else
mkdir $(BIN_DIR);
echo mkdir $(BIN_DIR) OK;
fi
clean:
rm -f *.o
$(EXESCMS):$(OBJSCMS)
$(CC) -o $(EXESCMS) $(OBJSCMS) $(CFLAG) $(CLINK) $(SYBASELIBS)
@echo $(EXESCMSNAME) "MAKED!"
userlist.o: $(DB)/userlist.c
$(CC) -c -I$(LIBDIR) $(DB)/userlist.c $(CFLAG) -o $(OBJPATH)/userlist.o
#lib
error.o:$(LIB)/error.c
$(CC) -c -I$(LIBDIR) $(LIB)/error.c $(CFLAG) -o $(OBJPATH)/error.o
|
gnu make中文手册
http://www.linuxsir.org/main/doc/gnumake/GNUmake_v3.80-zh_CN_html/index.html
你这makefile 也太混乱了。
from dependencies.ot find a rule to create target checkbin
从错误上来看
是没法 checkbin ,
简单点说就是checkbin: 下的指令不对。。
|
帮顶 总感觉 这 makefile 不咋专业
|
checkbin:
if [ -d $(BIN_DIR) ]; then
echo $(BIN_DIR) exist;
if [ -f $(EXESCMS) ]; then
rm $(EXESCMS);
echo rm old $(EXESCMS);
fi
else
mkdir $(BIN_DIR);
echo mkdir $(BIN_DIR) OK;
fi
这一段写得太乱,我帮你改一下:
if [ -d $(BIN_DIR) ]; then
echo $(BIN_DIR) exist;
if [ -f $(EXESCMS) ]; then
rm $(EXESCMS);
echo rm old $(EXESCMS);
fi
else
mkdir $(BIN_DIR);
echo mkdir $(BIN_DIR) OK;
fi
这一段写得太乱,我帮你改一下:
checkbin:
[ -d $(BIN_DIR) ] || { mkdir $(BIN_DIR); echo mkdir $(BIN_DIR) OK }
[ -f $(EXESCMS) ] && { rm $(EXESCMS); echo rm old $(EXESCMS) }
|
手上没有aix的机器,,没有环境就没有真相
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。