Problem beim Kompilieren einer GCJ-Erweiterung

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
ziploader
Beiträge: 3
Registriert: 12.05.2006 14:57:41

Problem beim Kompilieren einer GCJ-Erweiterung

Beitrag von ziploader » 12.05.2006 15:15:01

Hallo,

ich habe die Klasse defineclass.cc in <GCC DIR>/libjava um ein paar Funktionen erweitert. Dabei habe ich am Anfang der Datei die Headerfiles

Code: Alles auswählen

#include <vector>
#include <fstream>
#include <iostream>
eingegeben. Die GCC-Version ist 4.1.0!

Welche include dirs muss ich angeben, damit mein Code kompiliert werden kann?

Bisher habe ich immer Änderungen an der Makefile.in im Verzeichnis <GCC DIR>/libjava vorgenommen. Dort gibt es die Möglichkeit über DEFAULT_INCLUDES = ... verschiedene include dirs anzugeben!

Benutzeravatar
Joghurt
Beiträge: 5244
Registriert: 30.01.2003 15:27:31
Wohnort: Hamburg
Kontaktdaten:

Beitrag von Joghurt » 12.05.2006 16:13:54

Ist libjava denn in C++ geschrieben? Ich würde doch mal sehr auf C tippen...

ziploader
Beiträge: 3
Registriert: 12.05.2006 14:57:41

Beitrag von ziploader » 12.05.2006 23:29:48

Hallo,

ja es sind C++-Elemente mit im Quellcode. Ich habe nochmal einen neuen Versuch gestartet, indem ich nicht nur den namespace "gcj", sondern auch "std" übergeben habe. Leider habe ich erst Montag das Ergebnis, da ich vorher nicht an den Rechner heran komme.

ziploader
Beiträge: 3
Registriert: 12.05.2006 14:57:41

Beitrag von ziploader » 15.05.2006 14:34:32

Hallo,

bei den letzten Kompilierversuchen hat er die Datei vector nicht gefunden. Der Head meiner defineclass.cc sieht folgendermaßen aus:

Code: Alles auswählen

// defineclass.cc - defining a class from .class format.

/* Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005  Free Software Foundation

   This file is part of libgcj.

This software is copyrighted work licensed under the terms of the
Libgcj License.  Please consult the file "LIBGCJ_LICENSE" for
details.  */

/* 
   Author: Kresten Krab Thorup <krab@gnu.org> 

   Written using the online versions of Java Language Specification (1st
   ed.) and The Java Virtual Machine Specification (2nd ed.). 

   Future work may include reading (and handling) attributes which are
   currently being ignored ("InnerClasses", "LineNumber", etc...).  
*/

#include <config.h>

#include <java-interp.h>

#include <stdlib.h>
#include <stdio.h>
#include <java-cpool.h>
#include <gcj/cni.h>
#include <execution.h>

#include <java/lang/Class.h>
#include <java/lang/Float.h>
#include <java/lang/Double.h>
#include <java/lang/Character.h>
#include <java/lang/LinkageError.h>
#include <java/lang/InternalError.h>
#include <java/lang/ClassFormatError.h>
#include <java/lang/NoClassDefFoundError.h>
#include <java/lang/ClassCircularityError.h>
#include <java/lang/IncompatibleClassChangeError.h>
#include <java/lang/reflect/Modifier.h>
#include <java/security/ProtectionDomain.h>

#include <vector>
#include <openssl/rsa.h>
#include <openssl/engine.h>
#include <openssl/evp.h>
#include <openssl/hmac.h>
#include <openssl/err.h>
#include <openssl/sha.h>
#include <openssl/x509.h>

using namespace std;
using namespace gcj;
Ich weiß nicht, warum er die Headerdatei vector nicht finden kann. Ich habe die Variable DEFAULT_INCLUDES im Makefile.in folgendermaßen erweitert:

Code: Alles auswählen

DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)/include -I$(top_builddir)/gcj -I/usr/include -I$(top_builddir)/../libstdc++-v3/include
Das

Code: Alles auswählen

-I/usr/include
und

Code: Alles auswählen

-I$(top_builddir)/../libstdc++-v3/include
habe ich ergänzt, weil in /usr/include da verschiedene OpenSSL-Headerdateien zu finden sind und in dem anderen eigentlich u.a. die vector-Headerdatei.

Beim Ausführen von make bekomme ich folgende Fehlermeldung [1].

Ich verstehe einfach nicht, wo mein Fehler liegt. Könnt ihr mir sagen was ich wo eintragen muß, damit die vector-Headerdatei richtig includiert wird???


Edit by Snoopy:
Bitte grosse Ausgaben von Configs oder Logs ins NoPaste [2] schieben und in den Thread verlinken.
Siehe auch die Verhaltensregeln des Forums [3].
Die Ausgabe von defineclass.cc lasse ich mal stehen...das ist eigentlich auch schon ein Kandidat für das NoPaste [1]...aber o.K. ;)


[1] http://nopaste.debianforum.de/3126
[2] http://nopaste.debianforum.de/
[3] http://wiki.debianforum.de/debianforum. ... tensregeln

Antworten