hem
2010-10-25, 21:36:06
Hallo!
Versuche gerade, unter Linux mittels MAKE Javaprogramme zu erstellen. Als Compiler kommt gcj zum Einsatz. Dabei habe ich mich ziemlich nahe am Vorlesungsskript orientiert, bin aber doch nicht ganz erfolgreich.
Insgesamt existieren 3 Java-Klassen in je einem File, eine davon ist die main und versucht, Instanzen der beiden anderen Klasse zu instantiieren.
Das Makefile sieht so aus:
# Makefile
# Kommando-Variablen
JAVAC = gcj
JAVACFLAGS = -Wall -I.
RM = rm -f
# Hilfsvariablen
TARGET = Main
OBJECTS = MyClass1.o MyClass2.o
SOURCES = $(TARGET).java $(OBJECTS:.o=.java)
# Regeln
%.o: %.java
$(JAVAC) $(JAVACFLAGS) -c $< -o $@
# Standardziele
.PHONY: all clean
all: $(TARGET)
clean:
$(RM) $(TARGET) $(TARGET).o $(OBJECTS)
# Ziele zur Programmerstellung
$(TARGET): $(TARGET).o $(OBJECTS)
$(JAVAC) $(JAVACFLAGS) --main=$@ $^ -o $@
# Abhaengigkeiten
Main.o: Main.java MyClass1.java MyClass2.java
MyClass1.o: MyClass1.java
MyClass2.o: MyClass2.java
Wohl während Make kompilieren lässt kommt die Meldung, dass die in Main benutzen MyClass1 und 2 "cannot be resolved to a type". In Eclipse ist das ja die Standardmeldung, wenn der gewünschte Typ nicht verfügbar ist.
In meinem Fall sind makefile als auch die 3 Klassen in einem gemeinsamen Ordner. Der Javacode ist btw. in Ordnung, in Eclipse läuft er.
Die Abhängigkeiten am Ende kann gcj nicht automatisch erzeugen, deswegen stehen die da. Habe mich schon gefragt, ob die Dateien in der Aufzählung in der drittletzten Zeile hinter Main.o: nicht alle auf .o enden müssten, aber so steht es im Skript und ein Versuch brachte keine Besserung.
Danke!
Versuche gerade, unter Linux mittels MAKE Javaprogramme zu erstellen. Als Compiler kommt gcj zum Einsatz. Dabei habe ich mich ziemlich nahe am Vorlesungsskript orientiert, bin aber doch nicht ganz erfolgreich.
Insgesamt existieren 3 Java-Klassen in je einem File, eine davon ist die main und versucht, Instanzen der beiden anderen Klasse zu instantiieren.
Das Makefile sieht so aus:
# Makefile
# Kommando-Variablen
JAVAC = gcj
JAVACFLAGS = -Wall -I.
RM = rm -f
# Hilfsvariablen
TARGET = Main
OBJECTS = MyClass1.o MyClass2.o
SOURCES = $(TARGET).java $(OBJECTS:.o=.java)
# Regeln
%.o: %.java
$(JAVAC) $(JAVACFLAGS) -c $< -o $@
# Standardziele
.PHONY: all clean
all: $(TARGET)
clean:
$(RM) $(TARGET) $(TARGET).o $(OBJECTS)
# Ziele zur Programmerstellung
$(TARGET): $(TARGET).o $(OBJECTS)
$(JAVAC) $(JAVACFLAGS) --main=$@ $^ -o $@
# Abhaengigkeiten
Main.o: Main.java MyClass1.java MyClass2.java
MyClass1.o: MyClass1.java
MyClass2.o: MyClass2.java
Wohl während Make kompilieren lässt kommt die Meldung, dass die in Main benutzen MyClass1 und 2 "cannot be resolved to a type". In Eclipse ist das ja die Standardmeldung, wenn der gewünschte Typ nicht verfügbar ist.
In meinem Fall sind makefile als auch die 3 Klassen in einem gemeinsamen Ordner. Der Javacode ist btw. in Ordnung, in Eclipse läuft er.
Die Abhängigkeiten am Ende kann gcj nicht automatisch erzeugen, deswegen stehen die da. Habe mich schon gefragt, ob die Dateien in der Aufzählung in der drittletzten Zeile hinter Main.o: nicht alle auf .o enden müssten, aber so steht es im Skript und ein Versuch brachte keine Besserung.
Danke!