PoC-Consortium / engraver

PoCC Burstcoin Reference Plotter
MIT License
63 stars 39 forks source link

Make error on debian jessie #38

Closed damncourier closed 6 years ago

damncourier commented 6 years ago

thanks for the updates to linux cpu plotter! posting this as fyi and to help other users

$ gcc --version
gcc (Debian 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.

$ make
gcc -D LINUX -Wall -m64 -O3 -mtune=native -D_FILE_OFFSET_BITS=64 -c -o shabal64.o shabal64.s
gcc -D LINUX -Wall -m64 -O3 -mtune=native -D_FILE_OFFSET_BITS=64 -c -o helper64.o helper.c
gcc -D LINUX -Wall -m64 -O3 -mtune=native -D_FILE_OFFSET_BITS=64 -c -o mshabal_sse4.o mshabal_sse4.c
gcc -D LINUX -Wall -m64 -O3 -mtune=native -D_FILE_OFFSET_BITS=64 -mavx2 -c -o mshabal256_avx2.o mshabal256_avx2.c
mshabal256_avx2.c: In function ‘mshabal256_compress’:
mshabal256_avx2.c:48:5: error: ‘for’ loop initial declarations are only allowed in C99 or C11 mode
     for (uint8_t j = 0; j < 12; j++) {
     ^
mshabal256_avx2.c:48:5: note: use option -std=c99, -std=gnu99, -std=c11 or -std=gnu11 to compile your code
mshabal256_avx2.c:67:9: error: ‘for’ loop initial declarations are only allowed in C99 or C11 mode
         for (uint8_t j = 0; j < 128; j += 8, o += 4) {
         ^
mshabal256_avx2.c:78:22: error: redefinition of ‘j’
         for (uint8_t j = 0; j < 16; j++)
                      ^
mshabal256_avx2.c:67:22: note: previous definition of ‘j’ was here
         for (uint8_t j = 0; j < 128; j += 8, o += 4) {
                      ^
mshabal256_avx2.c:78:9: error: ‘for’ loop initial declarations are only allowed in C99 or C11 mode
         for (uint8_t j = 0; j < 16; j++)
         ^
mshabal256_avx2.c:84:22: error: redefinition of ‘j’
         for (uint8_t j = 0; j < 16; j++)
                      ^
mshabal256_avx2.c:78:22: note: previous definition of ‘j’ was here
         for (uint8_t j = 0; j < 16; j++)
                      ^
mshabal256_avx2.c:84:9: error: ‘for’ loop initial declarations are only allowed in C99 or C11 mode
         for (uint8_t j = 0; j < 16; j++)
         ^
mshabal256_avx2.c:230:18: error: redefinition of ‘j’
     for (uint8_t j = 0; j < 12; j++) {
                  ^
mshabal256_avx2.c:48:18: note: previous definition of ‘j’ was here
     for (uint8_t j = 0; j < 12; j++) {
                  ^
mshabal256_avx2.c:230:5: error: ‘for’ loop initial declarations are only allowed in C99 or C11 mode
     for (uint8_t j = 0; j < 12; j++) {
     ^
mshabal256_avx2.c: In function ‘mshabal256_init’:
mshabal256_avx2.c:260:5: error: ‘for’ loop initial declarations are only allowed in C99 or C11 mode
     for (uint8_t u = 0; u < 16; u++) {
     ^
mshabal256_avx2.c:282:18: error: redefinition of ‘u’
     for (uint8_t u = 0; u < 16; u++) {
                  ^
mshabal256_avx2.c:260:18: note: previous definition of ‘u’ was here
     for (uint8_t u = 0; u < 16; u++) {
                  ^
mshabal256_avx2.c:282:5: error: ‘for’ loop initial declarations are only allowed in C99 or C11 mode
     for (uint8_t u = 0; u < 16; u++) {
     ^
mshabal256_avx2.c: In function ‘mshabal256_close’:
mshabal256_avx2.c:412:5: error: ‘for’ loop initial declarations are only allowed in C99 or C11 mode
     for (uint16_t z = 288; z < 352;) {
     ^
Makefile:32: recipe for target 'mshabal256_avx2.o' failed
make: *** [mshabal256_avx2.o] Error 1

resolved by adding -std=c11 to offending line in Makefile

mshabal256_avx2.o: mshabal256_avx2.c
                $(CC) $(CFLAGS) -mavx2 -std=c11 -c -o mshabal256_avx2.o mshabal256_avx2.c
rico666 commented 6 years ago

Too old compiler. Use something with GCC 6.x or higher