Closed RalfJL closed 8 years ago
Hallo Ralf,
mien Compiler verarbeitet "-m32" nicht:
pi@raspberrypi:~/E3dcGui $ make
rm watchdog screenSave GuiMain start stop RscpMain Frame/touchtest
g++ -O1 Watchdog.cpp -o watchdog
cc -O1 screenSave.c -o screenSave
cc -O1 GuiMain.c -o GuiMain
cc -O1 start.c -o start
cc -O1 stop.c -o stop
g++ -O3 -m32 RscpMain.cpp Rscp/RscpProtocol.cpp Rscp/AES.cpp Rscp/SocketConnection.cpp Rscp/RWData.cpp -o RscpMain
g++: error: unrecognized command line option ‘-m32’
Makefile:24: recipe for target 'RscpMain' failed
make: *** [RscpMain] Error 1
Meine Compiler Version ist:
pi@raspberrypi:~/E3dcGui $ sudo gcc --version
gcc (Raspbian 4.9.2-10) 4.9.2
Copyright (C) 2014 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Auch mit GCC 6 wird -m32 nicht verarbeitet:
pi@raspberrypi:~/E3dcGui $ g++-6 -O3 -m32 RscpMain.cpp Rscp/RscpProtocol.cpp Rscp/AES.cpp Rscp/SocketConnection.cpp Rscp/RWData.cpp -o RscpMain
g++-6: error: unrecognized command line option ‘-m32’
Ist die Option vielleicht nur für x86 Anwendungen, wie Windows. Die E3dcGui Applikation wird von mir nur für den Raspberry Pi angeboten.
Bei den Optionen ist mir aufgefallen das ich "-O4" in den Makefile hatte, dies ist aber keine verwendbare Option. Im Code von E3DC wird "-O3" genutzt, ich habe das Makefile in V1.15 angepasst.
Danke für deine Hilfe!
Viele Grüße Nico
PS: ich hoffe es ist OK wenn ich auf deutsch Antworte. Englisch schreiben ist nicht meins!
Hallo Nico,
Offensichtlich ist der gcc auf Raspberry nicht so kompiliert, dass er unterschiedliche Bitbreiten unterstützt. Bei meinem CentOS z.B. liefert mein selbst übersetzter GCC ein: g++ -v Konfiguriert mit: ../gcc-4.9.3/configure --disable-multilib --enable-languages=c,c++,fortran
Also kein multilib, also kein 32Bit. Allerdings wirft erst der Linker einen Fehler. -m32 geht durch.
Der Standard Compiler, der bei CentOS 6.x dabei ist kompiliert Standard immer 64Bit. Das geht aber mit dem aktuellen AES.cpp nicht. Denn dann wäre ein unsigned long 8 Byte, bei 32 Bit nur 4 Byte. Besser wäre, wenn AES.cpp mit uint32_t arbeiten würde.
Egal. Witchtig ist hier einfach nur, dass auf 64Bit Betriebssystemen ein 32Bit Programm erzeugt werden muss. Und daher das -m32 Nur fällt mir momentan nichts ein, wie ich das ins Makefile "automatisch" hin bekommen würde.
Vielleicht hast Du ja noch eine Idee, wie man garantiert, dass das Rscp Programm mit 32 bit kompiliert wird. Auf 64Bit bekommst Du sonst garantiert einen core dump.
Viele Grüße
Ralf
Am 24.11.2016 um 21:16 schrieb nischram:
Hallo Ralf,
mien Compiler verarbeitet "-m32" nicht:
|pi@raspberrypi:~/E3dcGui $ make rm watchdog screenSave GuiMain start stop RscpMain Frame/touchtest g++ -O1 Watchdog.cpp -o watchdog cc -O1 screenSave.c -o screenSave cc -O1 GuiMain.c -o GuiMain cc -O1 start.c -o start cc -O1 stop.c -o stop g++ -O3 -m32 RscpMain.cpp Rscp/RscpProtocol.cpp Rscp/AES.cpp Rscp/SocketConnection.cpp Rscp/RWData.cpp -o RscpMain g++: error: unrecognized command line option ‘-m32’ Makefile:24: recipe for target 'RscpMain' failed make: *** [RscpMain] Error 1 |
Meine Compiler Version ist:
|pi@raspberrypi:~/E3dcGui $ sudo gcc --version gcc (Raspbian 4.9.2-10) 4.9.2 Copyright (C) 2014 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. |
Auch mit GCC 6 wird -m32 nicht verarbeitet:
|pi@raspberrypi:~/E3dcGui $ g++-6 -O3 -m32 RscpMain.cpp Rscp/RscpProtocol.cpp Rscp/AES.cpp Rscp/SocketConnection.cpp Rscp/RWData.cpp -o RscpMain g++-6: error: unrecognized command line option ‘-m32’ |
Ist die Option vielleicht nur für x86 Anwendungen, wie Windows. Die E3dcGui Applikation wird von mir nur für den Raspberry Pi angeboten.
Bei den Optionen ist mir aufgefallen das ich "-O4" in den Makefile hatte, dies ist aber keine verwendbare Option. Im Code von E3DC wird "-O3" genutzt, ich habe das Makefile in V1.15 angepasst.
Danke für deine Hilfe!
Viele Grüße Nico
PS: ich hoffe es ist OK wenn ich auf deutsch Antworte. Englisch schreiben ist nicht meins!
— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/nischram/E3dcGui/issues/4#issuecomment-262839992, or mute the thread https://github.com/notifications/unsubscribe-auth/AOaec6Jnpt1-ou8Ch3qMKEYuat6K-nL3ks5rBfCYgaJpZM4K7psh.
-- Ralf Lehmann Angerhofstr. 15 D-82110 Germering Tel.: 0171/1245129 UstIdNr.: DE128151971
Hallo Ralf,
da ich kein Programmierer bin und mich erst seit diesem Projekt mit c und c++ beschäftige, bin ich hier überfragt. Meine Applikation ist von mir für den Raspberry Pi ausgelegt und auf diesen ist das Compilieren bislang fehlerfrei, somit lasse ich die Option "-m32" erst einmal raus. Ich werden diese Issue vorerst schließen, aber ggf. wieder starten wenn der Pi mehr mit 64Bit genutzt wird und es bei meiner Applikation zu Problemen kommt. Vielleicht bekomme ich zur gegebenen Zeit bei E3DC dazu eine Aussage oder Hilfe.
Ich danke dir trotzdem recht herzlich für deine Mithilfe.
Viele Grüße Nico
Hi,
zur Info. In meinem Github Projekt
https://github.com/RalfJL/S10history
befindet sich eine Version von AES.h und AES.cpp, die man auf 64Bit kompilieren kann.
Viele Grüße
Ralf
Am 27.11.2016 um 13:49 schrieb nischram:
Closed #4 https://github.com/nischram/E3dcGui/issues/4.
— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/nischram/E3dcGui/issues/4#event-872839230, or mute the thread https://github.com/notifications/unsubscribe-auth/AOaecxVUIuJI2FcUwCyxKip2w7V-2aIBks5rCXx2gaJpZM4K7psh.
-- Ralf Lehmann Angerhofstr. 15 D-82110 Germering Tel.: 0171/1245129 UstIdNr.: DE128151971
Hallo Ralf,
danke für deine Mithilfe und dein Feedback. Ich werde es bei Gelegenheit oder Bedarf mal testen.
Viele Grüße Nico
AES.h und AES.cpp von RalfJL mit Update 1.32 übernommen.
@Ralf: Danke!!!
Hi,
this is not an issue, as long as raspberry is on 32Bit only. The problem is that the AES code is hand optimized but not portable. It will run only on 32bit systems. E.g. on 64Bit Linux it will fail unless you compile it to a 32bit application.
I would like to recommend the following change in the Makefile Line 24: $(CXX) -O4 RscpMain.cpp Rscp/RscpProtocol.cpp Rscp/AES.cpp Rscp/SocketConnection.cpp Rscp/RWData.cpp -o $@
should be: $(CXX) -O4 -m32 RscpMain.cpp Rscp/RscpProtocol.cpp Rscp/AES.cpp Rscp/SocketConnection.cpp Rscp/RWData.cpp -o $@
That way it will work on Linux 64Bit as well (as long as 32Bit support is installed)
Thanks
Ralf