cuyo - Portierung für OpenBSD

berni51

Open-Net-FreeBSD user
Also ein Gamer bin ich nicht, wirklich nicht. Aber jeden Abend ein Backgammon, Solitaire oder Tetris, das mach ich schon. Beim Tetris schwöre ich derzeit auf Cuyo.
Und jetzt das Problem: Es gibt kein cuyo-package für OpenBSD.
Und gleich das nächste Problem: Ich bin kein C-Programmierer.
So kommt es also dazu, dass ich am Compilieren von cuyo für OpenBSD scheitere. Configure läuft noch brav durch, make allerdings bricht nach wenigen ms ab.

Meine Hoffnung ist nun, dass sich hier ein cuyo-Freund outet, der das Spiel schon durch den Compiler auf OpenBSD gejagt hat.
Ist jetzt vielleicht nicht die wichtigste aller Fragen, aber ich hätte mein cuyo schon gern auf meinem Lieblings-OS. :cool:

Berni
 
So schauts aus:

NUC3# make
make all-recursive
Making all in src
g++ -DHAVE_CONFIG_H -I. -I.. -I/usr/local/include -I/usr/local/include/SDL -D_GNU_SOURCE=1 -D_REENTRANT -I/usr/X11R6/include -DXTHREADS -DPKGDATADIR=\"/usr/local/share/cuyo\" -DLOCALEDIR=\"/usr/local/share/locale\" -Wall -W -ansi -MT cuyo.o -MD -MP -MF .deps/cuyo.Tpo -c -o cuyo.o cuyo.cpp
cuyo.cpp: In function 'bool Cuyo::startLevel()':
cuyo.cpp:317: error: 'ngettext' was not declared in this scope
*** Error 1 in src (Makefile:379 'cuyo.o')
*** Error 1 in . (Makefile:328 'all-recursive')
*** Error 1 in /home/test/cuyo-2.0.0 (Makefile:244 'all')
NUC3#
 
Mit dem Eintrag läuft der compiler wesentlich weiter, aber dann .....

cuyo.o: In function `Cuyo::startLevel()':
cuyo.cpp:(text+0x2795): undefined reference to `libintl_ngettext'
collect2: ld returned 1 exit status
*** Error 1 in src (Makefile:316 'cuyo')
*** Error 1 in . (Makefile:328 'all-recursive')
*** Error 1 in /home/test/cuyo-2.0.0 (Makefile:244 'all')
 
Es fehlt -lintl . Ich weis gerade nicht wie ich das in makefile.am rein kriege. Am wende cd nach src und gib das ein:

Code:
c++  -Wall -W -ansi    -o cuyo bilddatei.o blopbesitzer.o  blop.o blopgitter.o configdatei.o  cuyointl.o fall.o cuyo.o  kiplayer.o leveldaten.o main.o  nachbariterator.o sorte.o spielfeld.o  pfaditerator.o xpmladen.o parser.o  scanner.o code.o knoten.o  datendatei.o variable.o fehler.o  definition.o bildstapel.o aufnahme.o  punktefeld.o global.o prefsdaten.o  sound.o ort.o ui.o  stringzeug.o version.o font.o  sdltools.o blatt.o menueintrag.o  maske.o -L/usr/local/lib -Wl,-rpath,/usr/local/lib -lSDL -pthread -lSDL_mixer -lz -lintl

Dann gibt es ein cuyo file. aber das ist nicht sauber gebaut. Ein "make install" geht trotzdem ;)
 
Zum Schluss dann doch wieder ein error:
c++: error: linker command failed with exit code 1 (use -v to see invocation)
 
Meine Compiler-Versuche finden nicht in $HOME statt, sondern in einem gesonderten Verzeichnis und als root.
 
*** Error 1 in /home/test/cuyo-2.0.0 (Makefile:244 'all')
hier steht /home und das ist != $HOME... w^x bzw. das gleichzeitige Schreiben und Ausführen wird in der fstab erlaubt... und ich bin mir nicht sicher ob das arbeiten als root automatisch w^x überschreibt... um sicher zu gehen das es nicht daran hängt, würde ich versuchen es komplett in /usr/local, das von der Grundinstallation her als einziges auf wxallowed gemountet ist, zu compilieren.
Ich hatte auch schon Seiteneffekte durch das w^x Thema, was man nicht unbedingt aus Fehlermeldungen oder Logs erkennen konnte.
 
Jetzt verstehe ich, was Du meinst! Die gesamte /home-Partition ist also w^x-geschützt. Klar, ich kann natürlich auch mal woanders kompilieren. Wird morgen probiert, danke dir.
 
Also: Auch unter /usr/local bricht der compiler an der gleichen Stelle ab. Das w^x Problem ist es demnach wohl nicht.

Vielleicht hat schorsch_76 ja noch eine Idee, wie ich die libgettext einbinden kann. :cool:
 
Wenn ich es richtig sehe, benutzt es Automake als Buildsystem. Da könntest du:

Code:
LDFLAGS="-lintl" ./configure

Das fügt in alle Linkeraufrufe ein -lintl ein.
 
OK, da hier bereits einige unterschiedliche Ansätze verfolgt wurden, kann man nicht mehr genau erkennen, was zu dem Fehler führt.

Du entpackst das Archiv. Was gibtst du danach ein und wie lauten die letzten 5 Meldungen des gesamten Vorgangs (inkl. Fehlermeldung, die zum Abbruch führt)?

Rob
 
Schritt für Schritt:
- Entpacken
- in src/cuyo.cpp ein #include <libintl.h> hinzufügen
- ./configure
- make

Compiler legt los, bis zu dieser Meldung:

/usr/local/lib/libSDL_mixer.so.5.0: warning: strcat() is almost always misused, please use strlcat()
aufnahme.o: In function `Aufnahme::rnd(int)':
aufnahme.cpp:(.text+0x3f4): warning: rand() may return deterministic values, is that what you want?
/usr/local/lib/libSDL_mixer.so.5.0: warning: strcpy() is almost always misused, please use strlcpy()
/usr/local/lib/libmikmod.so.4.0: warning: random() may return deterministic values, is that what you want?
/usr/local/lib/libmikmod.so.4.0: warning: sprintf() is often misused, please use snprintf()
/usr/local/lib/libsmpeg.so.2.0: warning: vsprintf() is often misused, please use vsnprintf()
cuyo.o: In function `Cuyo::startLevel()':
cuyo.cpp:(.text+0x2795): undefined reference to `libintl_ngettext'
collect2: ld returned 1 exit status
*** Error 1 in src (Makefile:316 'cuyo')
*** Error 1 in . (Makefile:328 'all-recursive')
*** Error 1 in /home/test/cuyo-2.0.0 (Makefile:244 'all')

Ob in /home/test oder /usr/local/test macht keinen Unterschied.
 
Bei dem Aufruf bricht configure ab:

NUC3# LDFLAGS="-lintl" ./configure
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... ./install-sh -c -d
checking for gawk... no
checking for mawk... no
checking for nawk... no
checking for awk... awk
checking whether make sets $(MAKE)... yes
checking whether to enable maintainer-specific portions of Makefiles... no
checking for g++... g++
checking whether the C++ compiler works... no
configure: error: in `/usr/local/test/cuyo-2.0.0':
configure: error: C++ compiler cannot create executables
See `config.log' for more details
 
Okay. Dann fehlt ihm wahrscheinlich der Pfad zur Lib. Kein Problem, den kann er bekommen:
Code:
LDFLAGS="-L/usr/local/lib -lintl" ./configure
 
Das wars!!! configure läuft durch, compiler läuft durch, cuyo startet.
Ich bedanke mich auf herzlichste bei allen Helfern, IHR SEID SO GUT !!!!

:rolleyes::rolleyes::rolleyes:
 
Leider etwas zu früh gefreut: Beim Start eines Spiels gibt es einen core dump - jedes mal: Bus error. Mist.
 
Zurück
Oben