Windows "make" aus mingw erzeugt einen Error

#1
Hallo allerseits,

ich habe für die FourQ-Lib [1] (Subordner FourQ-NEON) entsprechend der Readme versucht das Beispiel zu compilieren:
Code:
make CC=gcc ARCH=ARM INTERLEAVE=TRUE MIX_ARM_NEON=TRUE
als Ausgabe bekam ich:
Code:
FourQ_NEON>make CC=gcc ARCH=ARM INTERLEAVE=TRUE MIX_ARM_NEON=TRUE
gcc -c -O3     -D _ARM_ -D __LINUX__ -mfloat-abi=hard -mfpu=neon -D _INTERLEAVE_ -D _MIX_ARM_NEON_   -finline-functions -finline-limit=300 ecc_tests.c
gcc.exe: error: unrecognized command line option '-mfloat-abi=hard'
gcc.exe: error: unrecognized command line option '-mfpu=neon'
make: *** [ecc_tests.o] Error 1
weiß jemand, wie ich das richtig und fehlerfrei compilieren kann?

Viele Grüße

[1] FourQlib - Microsoft Research
 
Zuletzt bearbeitet:
#3
Das ist interessant. Ich habe auch die arm-none-eabi-gcc (Toolchain extra für ARM) auf dem Laptop installiert.

Gehe ich in das Portable-Verzeichnis und führe dort die Empfehlung aus, erhalte ich
Code:
FourQ_x64_and_portable>make CC=clang ARCH=x64 ASM=TRUE AVX2=TRUE USE_ENDO=TRUE SET=EXTENDED
clang -c -O3      -fwrapv -fomit-frame-pointer -march=native -mavx2 -D _AMD64_ -D __LINUX__  -D _AVX2_ -D _ASM_  -D USE_ENDO    ecc_tests.c
make: clang: Command not found
make: *** [ecc_tests.o] Error 127
was darauf hindeutet, dass clang.exe (falls es die überhaupt gibt) nicht "installiert" ist. Ich installiere clang nachträglich und überprüfe erstmal, ob ich überhaupt x64-compilierer habe.

EDIT: Install abgeschlossen; einige anfängliche Errors, aber durch "make clean" sind diese gefixt. Output nach Durchlauf:

Code:
FourQ_x64_and_portable>make CC=clang ARCH=x64 ASM=TRUE AVX2=TRUE USE_ENDO=TRUE SET=EXTENDED

clang -c -O3      -fwrapv -fomit-frame-pointer -march=native -mavx2 -D _AMD64_ -D __LINUX__  -D _AVX2_ -D _ASM_  -D USE_ENDO    ecc_tests.c

clang -c -O3      -fwrapv -fomit-frame-pointer -march=native -mavx2 -D _AMD64_ -D __LINUX__  -D _AVX2_ -D _ASM_  -D USE_ENDO    FourQ.c

clang -c -O3      -fwrapv -fomit-frame-pointer -march=native -mavx2 -D _AMD64_ -D __LINUX__  -D _AVX2_ -D _ASM_  -D USE_ENDO    eccp2.c

clang -c -O3      -fwrapv -fomit-frame-pointer -march=native -mavx2 -D _AMD64_ -D __LINUX__  -D _AVX2_ -D _ASM_  -D USE_ENDO    eccp2_no_endo.c

clang -c -O3      -fwrapv -fomit-frame-pointer -march=native -mavx2 -D _AMD64_ -D __LINUX__  -D _AVX2_ -D _ASM_  -D USE_ENDO    eccp2_core.c

clang -c -O3      -fwrapv -fomit-frame-pointer -march=native -mavx2 -D _AMD64_ -D __LINUX__  -D _AVX2_ -D _ASM_  -D USE_ENDO    AMD64/consts.c

clang -c -O3      -fwrapv -fomit-frame-pointer -march=native -mavx2 -D _AMD64_ -D __LINUX__  -D _AVX2_ -D _ASM_  -D USE_ENDO    AMD64/fp2_1271_AVX2.S

clang -c -O3      -fwrapv -fomit-frame-pointer -march=native -mavx2 -D _AMD64_ -D __LINUX__  -D _AVX2_ -D _ASM_  -D USE_ENDO    test_extras.c

clang -o ecc_test ecc_tests.o FourQ.o eccp2.o eccp2_no_endo.o eccp2_core.o consts.o fp2_1271_AVX2.o test_extras.o
Ich hätte nun vermutet, dass ich durch "ecc_test" den Test ausführen kann. Anstelle dessen erhalte ich den Error, dass der Befehl falsch geschrieben sei.
 
Zuletzt bearbeitet:
#5
Probiers mal mit einem *.exe Zusatz...
Hatte ich bereits, gleiche Meldung. Nachdem ich nun auf gcc umgestellt habe, lässt sich die ecc_test.exe ausführen. Fast alle Tests laufen. :) Der letzte (fixed-base precomputation tests) hat einen Fehler.

Nun würde ich das gerne für den ARM bereich compilieren. Hat jemand dazu Vorschläge, wie ich das einrichten muss, damit es klappen könnte?

Ich habe
- mingw @64&32-Bit
- clang @64&32-Bit
- ARM-Toolchain (arm-none-eabi-gcc) mit spezieller Unterstützung aller Architekturen von ARM.

Vielen Dank für die bisherige Hilfe :)
 
#7
Indem du unter Linux make im "FourQ_NEON" Ordner ausführst.

Code:
#define OS_LINUX     
1#if defined(__LINUX__)                    // Linux OS    
    #define OS_TARGET OS_LINUX 
#else    
   #error -- "Unsupported OS"#endif
vielleicht hilft dir das hier ja noch weiter: Getting Started with the ARM GCC Compiler on Windows, Part 1: Installing GCC and Eclipse

Wenn du frech bist, schmeisz die LInux links einfach aus dem code und probier, ob es durchlaeuft.
Ich geh den Link mal durch. Ich sollte egtl. Eclipse bereits eingerichtet haben, wenn ich mich da richtig erinnere. Kann auch auf einem anderen Laptop unter einem jüngeren System gewesen sein. Wer weiß :D

Ich probier es einfach mal, wie du vorgeschlagen hast. Notfalls installiere ich mir eine VM mit Ubuntu und schmeiß da alles notwendige drauf. Vlt. funktioniert es ja auch mal einen Shared-Folder einzurichten.

In der Readme zu fourQ wurde notiert, dass es für alle ARM Prozessoren funktioniert, die eine NEON Unterstützung bieten. Laut der ARM-Seite zu NEON sind es die Prozessoren der Serie ARMv7-A/R. Der M4 ist aus der Serie ARMv7-M. Auch habe ich noch (!) keine Informationen dazu gefunden, ob dieser einen NEON-support bietet. Also selbst wenn ich es erfolgreich compiliere und erfolgreich auf dem Laptop debugged kann, heißt es noch nicht, dass es erfolgreich auf den Prozessoren läuft. Vermutlich habe ich da dann endlich einen Punkt gefunden, der meiner Masterarbeit einen (mehr oder weniger) Sinn verleiht oder einfach nur schlecht recherchiert. :D
ARM Information Center-Difference between A,M,R
Additionally, the A and R profiles offer lots of advanced features and extensions, which are not available in ARMv7-M, for example:
Advanced SIMD extension (branded as NEON™).
Ich editiere/dokumentiere später die Ergebnisse meiner Versuche.
 
Zuletzt bearbeitet:

Chromatin

Moderator
Mitarbeiter
#8
ARM widerspricht sich da selbst:

[FONT=&quot]ARM NEON technology is an advanced SIMD (single instruction multiple data) architecture extension for the ARM Cortex-A series and Cortex-R52 processors. [/FONT]
Im developer Guide ist dann wieder von ARMv7-A die Rede .. vermutlich wirste Glück haben.

 
#9
Das wird sich dann wohl bald zeigen ^^ sobald ich es hinbekommen habe, dass es auf dem F407 laufen würde, flashe ich es und bekomme dann entsprechend eine Rückmeldung. (Erst wird es ja sowieso über Eclipse debugged..muss dazu aber noch gucken, wie ich in Eclipse das Projekt compilieren lassen kann :D)

Laut der verlinkten Seite steht da ja auch explizit,
Additionally, the A and R profiles offer lots of advanced features and extensions, which are not available in ARMv7-M, for example:
Advanced SIMD extension (branded as NEON™).


Der M4 ist, da Microcontroller, mit der Architektur ARMv7-M betitelt.
 
Oben