Problem beim compilieren eines Programmes :( [OpenKore]

Dodge

New Member
ich weiß eigentlich nicht wo ich anfangen soll ^^

also:
ich versuche das Programm OpenKore(hat nix mit dem OpenBSD projekt oder andern Open___ projekten zu tun^^) auf meinem PC mit OpenBSD4.1 zum laufen zu bekommen. Beim compilieren kommt die meldung
In file included from Benchmark.xs:1:
src/auto/XSTools/utils/dense_hash_map.h:93:66: ext/hash_fun.h: No such file or directory

daraufhin habe ich dann erstmal im forum von Openkore nachgefragt und wurde dann erstmal gefragt "does your system use GNU libstdc++?" dazu habe ich mir nur gedacht. hm kP hab openbsd erst seit ein paar tagen und erstmal gefragt wie ich das rausbekommen kann. die antwort war:
I don't know, I don't have OpenBSD. :/ Try asking an OpenBSD forum. Tell them that OpenKore uses Google's sparse_hash library and that it needs a hash function, as provided by SGI's hash_map implementation or something similar.

daraufhin habe ich als erstes mal nach der hash_map implementation von sgi gegooled und sogar was gefunden. aber leider kreige ich auch das nicht zum laufen :(

statdessen bekomme ich nun die meldung
In file included from src/auto/XSTools/utils/dense_hash_map.h:93,
from Benchmark.xs:1:
/home/dodge/stl/stl_hash_fun.h:38: error: syntax error before `template'
/home/dodge/stl/stl_hash_fun.h:49: error: syntax error before `<' token

da ich inzwischen leider ratlos bin wollte ich dann doch mal hier fragen ob jemand evtl ne idee hat wie ich das zum laufen bekommen könnte oder es vlt testen könnte ob und wie es bei ihm geht :)


Danke schonmal im vorraus, ich hoffe jemand kann mir helfen :D


Lieben Gruß Dodge


PS: Hier noch ein paar Links
Thread zu dem Thema im Openkore Forum: klick
Der How to run on Linux/Unix Guide: klick
SVN adresse: https://openkore.svn.sourceforge.net/svnroot/openkore/openkore/trunk
 
Auch wenn ich das Programm nicht testen kann, hab ich es mal spaßeshalber runtergeladen und kompiliert. Ich hatte die gleichen Probleme mit OpenBSD 4.1, habe sie aber wie folgt gelöst:

Das Problem mit "make -C" entsteht dadurch, dass von GNU make ausgegangen wird, obwohl BSD make vorliegt. GNU make heißt unter OpenBSD gmake und kann als Package nachinstalliert werden.

Folgende Patches sind für das Make-Problem notwendig:

Code:
--- makedist.sh~        Mon Aug 13 14:11:45 2007
+++ makedist.sh Fri Aug 24 12:56:40 2007
@@ -182,8 +182,8 @@
 if [[ "$SEMIBINDIST" != "1" ]]; then
        findConfpackDir
        findTablepackDir
-       make -C "$confpackDir" distdir DISTDIR="$dir/control" || err
-       make -C "$tablepackDir" distdir DISTDIR="$dir/tables" || err
+       gmake -C "$confpackDir" distdir DISTDIR="$dir/control" || err
+       gmake -C "$tablepackDir" distdir DISTDIR="$dir/tables" || err
 fi

 # Convert openkore.pl to Unix line format, otherwise Unix users can't

Code:
--- src/XSTools.pm~ Fri Aug 24 13:00:42 2007
+++ src/XSTools.pm  Fri Aug 24 13:00:52 2007
@@ -98,7 +98,7 @@
                XSTools::MakefileNotFound->throw(error => "Cannot find Makefile.
");
        }

-       my $ret = system('make', '-C', $dir);
+       my $ret = system('gmake', '-C', $dir);
        if ($ret != 0) {
                if (($ret & 127) == 2) {
                        # Ctrl+C pressed

Als nächstes der Patch für die nicht gefundene Headerdatei. OpenBSD wird mit libstdc++ ausgeliefert, aber der Name der Datei ist anders (wird sogar im Kommentar in der Datei mit angegeben):

Code:
--- src/auto/XSTools/utils/sparseconfig.h~     Fri Aug 24 13:06:16 2007
+++ src/auto/XSTools/utils/sparseconfig.h      Fri Aug 24 13:06:25 2007
@@ -34,7 +34,7 @@
        #define hash  hash_compare
 #else
        /* the location of <hash_fun.h>/<stl_hash_fun.h> */
-       #define HASH_FUN_H <ext/hash_fun.h>
+       #define HASH_FUN_H <ext/stl_hash_fun.h>
        /* the namespace of hash_map/hash_set */
        #define HASH_NAMESPACE __gnu_cxx
 #endif

Und zu guter letzt funktioniert es noch nicht, da stdc++ nicht mit eingelinkt wird. Der Patch sieht wie folgt aus:

Code:
--- src/auto/XSTools/SConscript~        Fri Aug 24 13:22:48 2007
+++ src/auto/XSTools/SConscript Fri Aug 24 13:22:59 2007
@@ -146,6 +146,7 @@
 deps_path = []

 if not win32:
+       deps += ['stdc++']
        deps += [READLINE_LIB]
        if have_ncurses:
                deps += ['ncurses']

So, das wars. Das ganze wird dann wie angegeben mit einem Aufruf von
Code:
./openkore.pl
kompiliert und gestartet - glaube ich. Ich bin so weit gekommen, dass ich einen Benutzernamen angeben sollte. Ich denke mal, dass jetzt alles funktioniert.
 
juhuuuu :D

vielen vieeeeeeelen dank =)


echt respekt, irgendwie hab ich nicht erwartet so schnell so ne genaue anleitung zu bekommen /no1

das einzige prob war das ich net wusste wie ich mit die patches per svn in der konsole vom bsd anwende und aufm windows mit TurtoiseSVN das nicht geklapt hat mit in datei kopieren ;)
aber es läuft *freuuu*


danke danke danke :D


Gruß Dodge

[edüt]
hm, ein problem gitbs da noch :/
ich hoffe du hast noch alles drauf^^"
und zwar, wenn ich da ankomme wo der den benutzernamen haben will kommt der '$' von der shell und das programm ist wieder aus -.-'

ich vermute es könnte an dem GNU readline 5.x sein was ich net installiert bekommen habe :/
hast du das installiert?

und könntest du evtl mal testen obs bei dir geht?
danach sollte der nach nem pw fragen (was du eingibst ist bei beidem unwichtig da er es erst später verwendet^^)
 
Zuletzt bearbeitet:
So, das wars. Das ganze wird dann wie angegeben mit einem Aufruf von
Code:
./openkore.pl
kompiliert und gestartet - glaube ich. Ich bin so weit gekommen, dass ich einen Benutzernamen angeben sollte. Ich denke mal, dass jetzt alles funktioniert.
und gleich ein Package drauch backen =)

ich seh eine rosige Zukunft für OpenBSD-OpenCore-Server
 
ich vermute es könnte an dem GNU readline 5.x sein was ich net installiert bekommen habe :/
hast du das installiert?

Readline ist ebenfalls standardmäßig dabei. Wenn du das nicht installiert hättest, dann würde schon die Erstellung fehlschlagen. Daran liegt es nicht.

Hier mal wieder ein Patch, mit dem das dann auch (unter OpenBSD) läuft:

Code:
--- src/Interface/Console/Simple.pm~    Mon Aug 13 14:11:47 2007
+++ src/Interface/Console/Simple.pm     Fri Aug 24 22:18:45 2007
@@ -42,17 +42,17 @@

 sub getInput {
        my ($self, $timeout) = @_;
+       my $bits = '';
        my $line;

+       vec($bits, fileno(STDIN), 1) = 1;
+
        if ($timeout < 0) {
-               $line = <STDIN>;
+               undef $timeout;
+       }

-       } else {
-               my $bits = '';
-               vec($bits, fileno(STDIN), 1) = 1;
-               if (select($bits, undef, undef, $timeout) > 0) {
-                       $line = <STDIN>;
-               }
+       if (select($bits, undef, undef, $timeout) > 0) {
+               $line = <STDIN>;
        }

        if (defined $line) {

Aber das war jetzt (EDIT: wirklich) alles, was ich zu dem Thema schreibe. Der Code sollte mal überarbeitet werden. Ein schlimmes Beispiel:

Code:
$ cd src/test
$ ./consoleui-test -c < /dev/null
Segmentation fault (core dumped)

Wenn du noch Fragen hast, dann sende mir eine PM.
 
Zuletzt bearbeitet:
Zurück
Oben