Ein paar mehr Informationen wären ganz gut. Welche GRX-Version? Ich gehe jetzt mal von einer der letzten aus.
yes, it was the version 2.4.6.
Welche Hardware? Ich nehme an, es ist *kein* Intel-kompatibler (IA32 bzw. x86). Wenn doch, wäre es evtl. ein größeres Problem. In dem Fall schick mal die Ausgabe von "gcc -E -dD -xc /dev/null".
it is an amd 64-bit computer.
Wenn nicht, dann wird in der Tat Code benutzt, der anscheinend veraltet ist. Probier mal beiliegende Änderung. (Anwenden mit "patch -p1 < grx.diff-byteorder" im GRX-Quellverzeichniss, dann wieder make ...)
I did this patch, it compiled a little but then the answer was following:
fdrivers/genblit.c:36: error: invalid lvalue in assignment fdrivers/genblit.c:36: error: invalid lvalue in assignment fdrivers/genblit.c:37: error: invalid lvalue in assignment fdirvers/genblit.c:37: error: invalid lvalue in assignment fdirvers/genblit.c:52: error: invalid lvalue in assignment fdirvers/genblit.c:52: error: invalid lvalue in assignment make[1]: *** [fdrivers/genblit.o] Fehler 1 make[1]: Leaving directory `/home/kprattes/grx246/src ` make: *** [libs] Fehler 2
I see. Unfortunately, the code doesn't seem ready for 64 bit platforms. :-( E.g., the macros in include/memcopy.h often use "int" or "unsigned" for sizes, where it should use at least "[unsigned] long" or better yet "size_t". On 32 bit targets, the difference doesn't matter.
To really fix it would probably require some work. ATM, I don't have the time to do it right. I don't know how familiar you are with low-level C (lots of macros, memory operations, etc.). If you'd like to try it yourself, I could probably give you some hints ...
As a quick fix for this problem, you could try adding:
#undef memcopy #define memcopy memcpy
at the end of include/memcopy.h, but I fear more problems will follow that might be harder to fix. (But please let me know what happens, anyway.)
If it doesn't work (as I suppose), you could try compiling in 32 bit mode. AFAICS (I haven't used this platform, just saw http://lists.debian.org/debian-amd64/2004/08/msg00084.html), this just requires installing the 32 bit compiler and libs (if not present) and adding "-m32" to the compiler options (CCOPT in makedefs.grx or on the make command-line). Of course, you'll have to do a rebuild ("make clean" or start with fresh sources).
im not sure, if the reply will be in the correct format. would be happy if you could help me. thanks. :-))
Well, I'd prefer plaintext (no HTML). Also, it helps readability to mark quoted text with "> " (as I did above). Most mail programs can do this automatically. And please note that the list doesn't set a "Reply-To" header, so by default, answers go to the previous poster (me) only, so please "group reply" or "reply to all" or something like that, or just make sure the reply goes to grx@gnu.de. (I'm quoting your mail in full, so no need to resend this one to the list now.)
Frank
Frank Heckenbach a écrit:
Ein paar mehr Informationen wären ganz gut. Welche GRX-Version? Ich gehe jetzt mal von einer der letzten aus.
yes, it was the version 2.4.6.
Welche Hardware? Ich nehme an, es ist *kein* Intel-kompatibler (IA32 bzw. x86). Wenn doch, wäre es evtl. ein größeres Problem. In dem Fall schick mal die Ausgabe von "gcc -E -dD -xc /dev/null".
it is an amd 64-bit computer.
Wenn nicht, dann wird in der Tat Code benutzt, der anscheinend veraltet ist. Probier mal beiliegende Änderung. (Anwenden mit "patch -p1 < grx.diff-byteorder" im GRX-Quellverzeichniss, dann wieder make ...)
I did this patch, it compiled a little but then the answer was following:
fdrivers/genblit.c:36: error: invalid lvalue in assignment fdrivers/genblit.c:36: error: invalid lvalue in assignment fdrivers/genblit.c:37: error: invalid lvalue in assignment fdirvers/genblit.c:37: error: invalid lvalue in assignment fdirvers/genblit.c:52: error: invalid lvalue in assignment fdirvers/genblit.c:52: error: invalid lvalue in assignment make[1]: *** [fdrivers/genblit.o] Fehler 1 make[1]: Leaving directory `/home/kprattes/grx246/src ` make: *** [libs] Fehler 2
I see. Unfortunately, the code doesn't seem ready for 64 bit platforms. :-( E.g., the macros in include/memcopy.h often use "int" or "unsigned" for sizes, where it should use at least "[unsigned] long" or better yet "size_t". On 32 bit targets, the difference doesn't matter.
To really fix it would probably require some work. ATM, I don't have the time to do it right. I don't know how familiar you are with low-level C (lots of macros, memory operations, etc.). If you'd like to try it yourself, I could probably give you some hints ...
As a quick fix for this problem, you could try adding:
#undef memcopy #define memcopy memcpy
at the end of include/memcopy.h, but I fear more problems will follow that might be harder to fix. (But please let me know what happens, anyway.)
If it doesn't work (as I suppose), you could try compiling in 32 bit mode. AFAICS (I haven't used this platform, just saw http://lists.debian.org/debian-amd64/2004/08/msg00084.html), this just requires installing the 32 bit compiler and libs (if not present) and adding "-m32" to the compiler options (CCOPT in makedefs.grx or on the make command-line). Of course, you'll have to do a rebuild ("make clean" or start with fresh sources).
you may be interested by the following message from Mariano Alvarez sent some time ago on the grx mailing list
Hi
I have released MGRX, it stands for mini-grx or my-grx or Mariano's grx. It's a fork of GRX, only C API, no BGI, no add-ons, only 4 platforms supported: djgpp, mingw, linux-framebuffer and linux-X11. A new and different input API. And support for x86-64.
^^^^^^^^^^^^^^^^^^^^^^
The main site is http://mgrx.fgrim.com
Greetings, M.Alvarez
The drawback for us (pascal programmers) is the lack of pascal (gpc) support (and BGI support). THe first is probably easy to correct (only needs adaptation of grx.pas ? ). The second less so, bgi seems more inherently 32 bits.
Maurice