2012-02-23 3 views
0

У меня есть файл makefile. Когда я запускаю его на Unix я получаю эту ошибку:использование: cc [опции] файлы. Используйте '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: Добавление весь мой 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 [email protected] 
clean: 
    $(RM) *.o 

ответ

2

Это означает, что у вас есть недопустимый параметр компилятора в командной строке. Возможно, вы используете «неправильный» компилятор (например, GCC вместо компилятора Sun). Вероятные варианты проблемы я вижу, являются:

  • -Xt
  • -errwarn=%all

и, возможно (но, вероятно, не)

  • -Bstatic

Остальные не приведет to usag таких ошибок.

(NB: Это помогло бы идентифицировать машину и компилятор вы используете, и компилятор Oracle ожидает вас использовать.)

+0

Это было '-errwarn =% all' – Adrian

2

Похоже, у вас нет каких-либо объектные файлы на самом деле свяжутся вместе. Переменная $ (INTFOBJS), вероятно, пуста. Наряду с потенциально неправильными флагами это также приведет к сбою.

+1

+1: Это также проблема, но, вероятно, не приведет к ошибке использования. Связанная с этим проблема заключается в том, что выходной файл является 'bessToWss', а не находится в подкаталоге, как это подразумевается по правилу (если только' $ (TARGET_DIR) 'является текущим каталогом). –

+0

ну, '$ INTFOBJS' состоит из двух других варсов, которые вместе взяты (я не включил их в мой вопрос). Один файл .o, а другой var - это список из 2 файлов .c. Я задаюсь вопросом, может ли смешивание файлов .o и .c привести к ошибке ...? Хорошая догадка. – Adrian

+0

@Adrian: Нет; компилятор C будет обрабатывать смешанные C и объектные файлы (и файлы ассемблера, если вы так склонны) с апломбом. Я уверен, что проблема - это один из вариантов, которые вы указали. Я ожидал, что компилятор (компоновщик) будет жаловаться на «никаких объектных файлов» или «неопределенный символ» _main'' »или что-то подобное, если список файлов был проблемой. –

Смежные вопросы