用法:cc [options]文件。使用'cc -flags'了解详细信息

时间:2012-02-23 20:26:47

标签: c makefile

我有一个makefile。当我在Unix上运行它时,我得到了这个错误:

cc -I/opt/oracle/product/9.2.0/rdbms/demo -I/opt/oracle/product/9.2.0/rdbms/public \
   -I/opt/oracle/product/9.2.0/plsql/public \
   -I/opt/oracle/product/9.2.0/network/public -I../common -I../include -I. \
   -L/opt/oracle/product/9.2.0/lib -L/opt/oracle/product/9.2.0/rdbms/lib -L../../lib \
   -g -errwarn=%all -Xt  -lclntsh -ldl -Bstatic -lclient9 -lvsn9 -lcommon9 -lgeneric9 \
   -lmm -lcore9 -lnls9  -lwssmbx -ldes -lnsl -lsocket -lgen -lm -o bessToWss

usage: cc [ options] files.  Use 'cc -flags' for details  
*** Error code 1

usage: cc [ options] files. Use 'cc -flags' for details”是什么意思?

我不确定为什么我会收到错误,因为我确实使用了cc -flags

$(TARGET_DIR)/bessToWss: $(INTFOBJS)  
    cc $(CFLAGS) $(INTFOBJS) $(OCISHAREDLIBS) -o $@

编辑:添加我的整个makefile

ORACLE_HOME=/opt/oracle/product/9.2.0

COMMON_SRC=../common
BNS_INCLUDE=../include
LIBHOME=$(ORACLE_HOME)/lib/
RDBMSLIB=$(ORACLE_HOME)/rdbms/lib/

WSSLIBS     =-lwssmbx -ldes
LLIBRDBMS_CLT   =-lclient9 -lvsn9 -lcommon9 -lgeneric9 -lmm
LLIBCLNTSH      =-lclntsh -ldl
CORELIBS        =-lcore9 -lnls9 
LDLIBS          =-lnsl -lsocket -lgen -lm
EXSYSLIBS       =-R $(ORACLE_HOME)/lib

STATICTTLIBS    =$(LLIBRDBMS_CLT) $(CORELIBS) $(WSSLIBS) $(LDLIBS)
OCISHAREDLIBS   =$(LLIBCLNTSH) -Bstatic $(STATICTTLIBS)


LDFLAGS     =-L$(ORACLE_HOME)/lib -L$(ORACLE_HOME)/rdbms/lib -L../../lib

INCLUDE     =-I$(ORACLE_HOME)/rdbms/demo -I$(ORACLE_HOME)/rdbms/public -I$(ORACLE_HOME)/plsql/public -I$(ORACLE_HOME)/network/public -I$(COMMON_SRC) -I$(BNS_INCLUDE) -I. 

CFLAGS      =$(INCLUDE) $(LDFLAGS) -g -errwarn=%all -Xt

BESSOBJS=bessToWss.o


COMMONLIST=$(COMMON_SRC)/oracle.c \
    $(COMMON_SRC)/logger.c

INTFOBJS=$(BESSOBJS) $(COMMONLIST)


$(TARGET_DIR)/bessToWss: $(INTFOBJS)
    cc $(CFLAGS) $(INTFOBJS) $(OCISHAREDLIBS) -o $@
clean:
    $(RM) *.o

2 个答案:

答案 0 :(得分:2)

这意味着命令行上的编译器选项无效。可能是您正在使用“错误的”编译器(例如,可能是GCC而不是Sun的编译器)。我看到的可能的问题选项是:

  • -Xt
  • -errwarn=%all

也许(但可能不是)

  • -Bstatic

其他人不会导致这样的使用错误。

(注意:这有助于识别您正在使用的机器和编译器,以及Oracle希望您使用的编译器。)

答案 1 :(得分:2)

看起来您没有任何实际链接在一起的对象文件。 $(INTFOBJS)变量可能为空。除了可能有错误的标志之外,这也会导致它失败。