免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2042 | 回复: 1
打印 上一主题 下一主题

linux下的make为何会自动删除预编译输出的中间文件*.c? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2004-10-11 16:57 |只看该作者 |倒序浏览
我在linux下使用make进行oracle或者informix开发编译时,每次编译后make总是会自动将*.pc或者*.ec预编译后生成的*.c中间文件删除,同样的操作在IBM AIX下都是正常的,不会删除*.c中间文件。我试着使用了不同版本的make,都存在这个问题。

我的makefile如下:
################OPTION###################
CCOMPILE = gcc
CPPCOMPILE = g++
COMPILEOPTION = -c -g
INCLUDEDIR = -I$(ORACLE_HOME)/rdbms/public -I$(ORACLE_HOME)/precomp/public
LINK = g++
LINKOPTION = -g -o /home/oracle/tmp/ora1/ora1 -lclntsh
LIBDIRS = -L$(ORACLE_HOME)/lib
OBJS = ora1.o
OUTPUT = /home/oracle/tmp/ora1/ora1
APPENDLIB =
PROC_OPTION = DEFINE=_PROC_ MODE=ORACLE LINES=true CODE=CPP
ESQL_OPTION = -g
################OPTION END################
ESQL = esql
PROC = proc
$(OUTPUT)(OBJS) $(APPENDLIB)
        $(LINK) $(LINKOPTION) $(LIBDIRS)   $(OBJS) $(APPENDLIB)

clean:
        rm -f $(OBJS)
        rm -f $(OUTPUT)
all: clean $(OUTPUT)
.SUFFIXES:
.SUFFIXES:  .c .o .cpp .ecpp .pc .ec .C

.cpp.o:
        $(CPPCOMPILE) -c -o $*.o $(COMPILEOPTION) $(INCLUDEDIR)  $*.cpp

.c.o:
        $(CCOMPILE) -c -o $*.o $(COMPILEOPTION) $(INCLUDEDIR) $*.c

.C.o:
        $(CPPCOMPILE) -c -o $*.o $(COMPILEOPTION) $(INCLUDEDIR) $*.C       

.ecpp.C:
        $(ESQL) -e $(ESQL_OPTION) $(INCLUDEDIR) $*.ecpp
       
.ec.c:
        $(ESQL) -e $(ESQL_OPTION) $(INCLUDEDIR) $*.ec
       
.pc.cpp:
        $(PROC)  CPP_SUFFIX=cpp $(PROC_OPTION)  $*.pc


make执行的输入如下:
-----------------------------------------
make -f Makefile.ora1_DEBUG  ...
proc  CPP_SUFFIX=cpp DEFINE=_PROC_ MODE=ORACLE LINES=true CODE=CPP  ora1.pc
Pro*C/C++: Release 9.2.0.1.0 - Production on Mon Oct 11 16:50:01 2004
Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved.
System default option values taken from: /opt/oracle/product/9.0.1/precomp/admin/pcscfg.cfg
g++ -c -o ora1.o -c -g -I/opt/oracle/product/9.0.1/rdbms/public -I/opt/oracle/product/9.0.1/precomp/public   ora1.cpp
g++ -g -o /home/oracle/tmp/ora1/ora1 -lclntsh -L/opt/oracle/product/9.0.1/lib    ora1.o  
ora1.o(.text+0x392): In function `main':
//ora_linux/home/oracle/tmp/ora1/ora1.pc(137):  the `gets' function is dangerous and should not be used.
rm ora1.cpp
*********Make Finished*********

最后这句
rm ora1.cpp
是make自动执行的,不知道有什么办法禁止掉吗?请大家帮忙看看,谢了先。

论坛徽章:
0
2 [报告]
发表于 2004-10-11 19:27 |只看该作者

linux下的make为何会自动删除预编译输出的中间文件*.c?

make oral.cpp -f Makefile.local
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP