2012-02-23 17 views
0

私はmakefileを持っています。私はUnix上でそれを実行すると、私はこのエラーを取得:用法:cc [options] files。詳細については、 'cc -flags'を使用してください。

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 [email protected] 

EDIT:私の全体のメイクファイルを追加する

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 [email protected] 
clean: 
    $(RM) *.o 

答えて

2

それはあなたが、無効なコンパイラオプションを持っていることを意味コマンドラインであなたが「間違った」コンパイラ(例えばSunのコンパイラの代わりにGCCかもしれない)を使用しているかもしれません。私が見る可能性の高い問題のオプションは次のとおりです。

  • -Xt
  • -errwarn=%all

、多分(おそらくない)

  • -Bstatic

他はつながりません使用するそのようなeエラー。

(NB:それは、マシンや、使用しているコンパイラ、およびOracleは、使用する予定のコンパイラを識別するのに役立つだろう)

+0

それは '-errwarn =%all'でした。 – Adrian

2

あなたが実際に任意のオブジェクト・ファイルを持っていないように見えます一緒にリンクする。 $(INTFOBJS)変数はおそらく空です。潜在的に間違ったフラグを持つことに加えて、これも失敗する原因になります。

+1

+1:それはまた問題ですが、おそらく 'usage'エラーにつながりません。関連する問題は、出力ファイルが( '$(TARGET_DIR)'が現在のディレクトリでない限り)規則によって暗示されているように、サブディレクトリにあるのではなく、 'bessToWss'であるということです。 –

+0

まあ、 '$ INTFOBJS'は他の2つの変数をまとめて構成されています(私の質問には含まれませんでした)。 1つは.oファイルで、もう1つは2つの.cファイルのリストです。 .oファイルと.cファイルが混在すると、エラーが発生する可能性がありますか?良い推測。 – Adrian

+0

@Adrian:いいえ。 Cコンパイラは、Cとオブジェクトファイル(およびあなたが傾けられている場合はアセンブラファイル)を混ぜて処理します。私は問題があなたが指定したオプションの1つであると確信しています。コンパイラ(リンカ)は、ファイルリストが問題であれば、 'オブジェクトファイルが指定されていません'または '未定義のシンボル' _main'' 'か何か似ていると不平を言うことを期待しています。 –

関連する問題