Ошибка при запуске моего make-файла для компилятора C AIX UNIX

265
Oleg

Ниже мой make-файл

CC = xlC  CFLAGS = $(DEBUG) -O -q64 -qrtti=all \  -I$(ORACLE_HOME)/rdbms/demo -I$(ORACLE_HOME)/rdbms/public \  -I$(ORACLE_HOME)/network/public -I$(ORACLE_HOME)/precomp/public -I$(ORACLE_HOME)/plsql/public \  -I. -I../inc \  -I/usr/include -I/usr/xlc/include \  -I/usr/vacpp/include \  -I/usr/vacpp/iocsrc/core/base \  -I/usr/vacpp/iocsrc/core/utils \  -I /usr/vacpp/iocsrc/core/streams  IBM_LIBPATH=-L/usr/vacpp/lib  IBM_LIBS= -liocns -liconv   ORACLE_LIBPATH=-L$(ORACLE_HOME)/lib -L$(ORACLE_HOME)/rdbms/lib  ORACLE_LIBS=-lclntsh -lld -lm   MQ_LIBPATH=-L$(MQM_HOME)/lib64  MQLIB = $(MQ_LIBPATH) -lmqm -lmqmcs -lmqmzse   LIBS = $(IBM_LIBS) $(MQLIB) $(ORACLE_LIBS) -lpthreads  LIBS = $(MQLIB) $(ORACLE_LIBS) -lpthreads  LDFLAGS = -q64 $(IBM_LIBPATH) $(MQ_LIBPATH) $(ORACLE_LIBPATH)   SOURCE=../src  EXE = $(SOURCE)/fin2ici  MAIN = $(SOURCE)/fin2ici.c  OBJS = $(SOURCE)/fin2ici.o $(SOURCE)/dte_mq.o   .SUFFIXES: .c .o   # Compilation rules  .C.o:  $(CC) $(CFLAGS) -c -o ${<:.c=.o} $<   .c.o:  $(CC) $(CFLAGS) -c -o ${<:.c=.o} $<   all: $(EXE)   @(EXE)  @if [ -z "$(DEBUG)" ];\  then \  echo "Copying files to bin direectory"; \  cp $(EXE) ../bin; \  rm -f $(OBJS); \  rm -f $; \   fi;  @echo "Done"   $(EXE): $(OBJS) $  $(CC) $(LDFLAGS) -o $(EXE) $(OBJS) $ $(LIBS)  clean:  \rm -f $(OBJS)  \rm -f $  \rm -f $(EXE)   # DO NOT DELETE THIS LINE -- make depend depends on it.  #$(SOURCE)/iciio.o: ../inc/parser.h ../inc/tblDef.h ../inc/iciio.h  #$(SOURCE)/tblDef.o: ../inc/parser.h ../inc/tblDef.h  #$(SOURCE)/icidata.o: ../inc/parser.h ../inc/tblDef.h ../inc/iciio.h  

когда я его запускаю, всегда получаю ту же ошибку

make -f ./makefile.fin2ici_bak xlC -q64 -L / usr / vacpp / lib -L / usr / mqm / lib64 -L / data / oracle / product / 11.2.0.4.7 / lib -L / data / oracle / product / 11.2.0.4.7 / rdbms / lib -o ../src/fin2ici ../src/fin2ici.o ../src/dte_mq.o ../src/fin2ici.o -L / usr / mqm / lib64 -lmqm -lmqmcs -lmqmzse -lclntsh -lld -lm -lpthreads
ld: 0711-738 ОШИБКА: входной файл ../src/fin2ici.o:
объектные файлы XCOFF32 не разрешены в 64-разрядном режиме.
make: код ошибки из последней команды 8.

Stop. 

 

Есть идеи, где ошибка?

0
мы могли бы начать с этих двух строк: `LIBS = $ (IBM_LIBS) $ (MQLIB) $ (ORACLE_LIBS) -lpthreads LIBS = $ (MQLIB) $ (ORACLE_LIBS) -lpthreads`, какую из них вы хотите использовать? закомментируйте строку, которую вы НЕ хотите использовать. user3629249 6 лет назад 0
при определении макроса используйте: `: =` вместо `=`, чтобы макрос не переоценивался при каждой ссылке на него. user3629249 6 лет назад 0
в отношении строк типа: `all: $ (EXE)` и `clean:` эти строки не создают файл с таким же именем, поэтому перед ними должно стоять: `.PHONY: all clean` user3629249 6 лет назад 0
кажется, отсутствует определение макроса `ORACLE_HOME` user3629249 6 лет назад 0
похоже, отсутствует определение макроса: `MQM_HOME` user3629249 6 лет назад 0
эта строка: `fi;` отсутствует ведущая персонаж user3629249 6 лет назад 0
в отношении этих двух строк: `all: $ (EXE) @ (EXE)` просто наличие макроса EXE в качестве зависимости приведет к выполнению рецепта EXE. Таким образом, make-файл будет пытаться выполнить рецепт дважды. user3629249 6 лет назад 0
компоновщик, в отличие от компилятора, оценивает свои параметры слева направо, поэтому макрос `$ (LDFLAGS) должен быть последним параметром, а не первым, потому что компоновщик не будет стремиться« удовлетворить »неразрешенные символы (из библиотек) до после обработки всех файлов объекта user3629249 6 лет назад 0
насколько я могу судить, опция: `qRTTI = all` предназначена только для генерации информации времени выполнения для исключений при компиляции файлов C ++, которые, похоже, не использует ни один из операторов компиляции. Предложите удалить этот параметр user3629249 6 лет назад 0
это утверждение: `.SUFFIXES: .c .o` редко, если вообще необходимо. Предложите удалить это утверждение. user3629249 6 лет назад 0
используйте рецепт, похожий на: `Чтобы сделать оптимизированные .o файлы из .c файлов, введите: .co: c89 -c -o $ *. c или: .co: c89 -c -o $ <`, как указано в [IBM компилятор] (https://www.ibm.com/support/knowledgecenter/en/ssw_aix_61/com.ibm.aix.cmds3/make.htm) user3629249 6 лет назад 0

0 ответов на вопрос

Похожие вопросы