Fehler beim Ausführen meines Makefiles für C-Compiler AIX UNIX

344
Oleg

Unten ist mein Makefile

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  

Wenn ich es laufen lasse, bekomme ich immer den gleichen Fehler

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 FEHLER: Eingabedatei ../src/fin2ici.o:
XCOFF32-Objektdateien sind im 64-Bit-Modus nicht zulässig.
make: Der Fehlercode des letzten Befehls lautet 8.

Stop. 

 

Irgendeine Idee, wo der Fehler ist?

0
Wir könnten mit diesen zwei Zeilen beginnen: `LIBS = $ (IBM_LIBS) $ (MQLIB) $ (ORACLE_LIBS) -lpthreads LIBS = $ (MQLIB) $ (ORACLE_LIBS) -lpthreads` welche möchten Sie tatsächlich verwenden? Kommentieren Sie die Zeile aus, die Sie NICHT verwenden möchten. user3629249 vor 6 Jahren 0
Verwenden Sie beim Definieren eines Makros Folgendes: `: =` anstelle von `=`, damit das Makro nicht jedes Mal neu ausgewertet wird, wenn es referenziert wird. user3629249 vor 6 Jahren 0
in Bezug auf Zeilen wie: `all: $ (EXE)` und `clean:` Diese Zeilen erzeugen keine Datei mit demselben Namen, daher sollten sie vorangestellt werden: `.PHONY: all clean` user3629249 vor 6 Jahren 0
Es scheint eine Definition des Makros "ORACLE_HOME" zu fehlen user3629249 vor 6 Jahren 0
Es scheint eine Definition des Makros zu fehlen: `MQM_HOME` user3629249 vor 6 Jahren 0
In dieser Zeile: `fi;` fehlt die führende Zeile Charakter user3629249 vor 6 Jahren 0
In Bezug auf diese zwei Zeilen: `all: $ (EXE) @ (EXE)` Wenn Sie nur das Makro `EXE` als Abhängigkeit haben, wird das Rezept` EXE` ausgeführt. Das Makefile versucht also, das Rezept zweimal auszuführen. user3629249 vor 6 Jahren 0
Im Gegensatz zum Compiler wertet der Linker seine 'Parameter von links nach rechts aus. Daher sollte das Makro `$ (LDFLAGS) der letzte Parameter sein, nicht der erste, da der Linker nicht nach aufgelösten Symbolen (aus Bibliotheken) sucht. bis nach der Bearbeitung aller Objektdateien user3629249 vor 6 Jahren 0
Soweit ich das beurteilen kann, dient die Option: `qRTTI = all` nur zum Generieren von Laufzeitinformationen für Ausnahmen beim Kompilieren von C ++ - Dateien, die keine der Kompilieranweisungen zu verwenden scheinen. Schlagen Sie vor, diesen Parameter zu entfernen user3629249 vor 6 Jahren 0
Diese Aussage: `.SUFFIXES: .c .o` wird selten, wenn überhaupt, benötigt. Schlagen Sie vor, diese Aussage zu entfernen. user3629249 vor 6 Jahren 0
Verwenden Sie ein ähnliches Rezept für: `Um optimierte .o-Dateien aus .c-Dateien zu erstellen, geben Sie Folgendes ein: .co: c89 -c -o $ *. c oder: .co: c89 -c -o $ <` wie in [IBM Compiler] (https://www.ibm.com/support/knowledgecenter/de/ssw_aix_61/com.ibm.aix.cmds3/make.htm) user3629249 vor 6 Jahren 0

0 Antworten auf die Frage