Ошибка: unknown type name «define»

Ответить
Аватара пользователя
-=KabaL=-
Сообщения: 247
Зарегистрирован: 28 мар 2015, 12:46
Operating system: ROSA Desktop Fresh R5 release 2014.1 for x86_64

Ошибка: unknown type name «define»

Сообщение -=KabaL=- » 09 июн 2017, 15:05

Всем доброго времени суток!
Собираю пакет из исходников cpuminer-multi-linux
При компиляции выходят такие ошибки

Код: Выделить всё

In file included from /usr/include/curl/curl.h:38:0,
                 from cpu-miner.c:26:
/usr/include/curl/curlbuild.h:169:1: ошибка: unknown type name «define»
 define CURL_SIZEOF_CURL_SOCKLEN_T 4
 ^
/usr/include/curl/curlbuild.h:169:35: ошибка: expected «=», «,», «;», «asm» or «__attribute__» before numeric constant
 define CURL_SIZEOF_CURL_SOCKLEN_T 4
                                   ^
In file included from /usr/include/curl/curl.h:39:0,
                 from cpu-miner.c:26:
/usr/include/curl/curlrules.h:89:4: ошибка: #error "CURL_SIZEOF_CURL_SOCKLEN_T definition is missing!"
 #  error "CURL_SIZEOF_CURL_SOCKLEN_T definition is missing!"
    ^
/usr/include/curl/curlrules.h:90:4: ошибка: unknown type name «Error»
    Error Compilation_aborted_CURL_SIZEOF_CURL_SOCKLEN_T_is_missing
    ^
/usr/include/curl/curlrules.h:141:1: ошибка: expected «=», «,», «;», «asm» or «__attribute__» before «typedef»
 typedef char
 ^
/usr/include/curl/curlrules.h:173:6: ошибка: «curl_socklen_t» undeclared here (not in a function)
     [CurlchkszEQ(curl_socklen_t, CURL_SIZEOF_CURL_SOCKLEN_T)];
      ^
/usr/include/curl/curlrules.h:173:6: ошибка: «CURL_SIZEOF_CURL_SOCKLEN_T» undeclared here (not in a function)
     [CurlchkszEQ(curl_socklen_t, CURL_SIZEOF_CURL_SOCKLEN_T)];
До этой ошибки была ошибка

Код: Выделить всё

In file included from /usr/include/curl/curl.h:39:0,
                 from cpu-miner.c:26:
/usr/include/curl/curlrules.h:142:3: ошибка: size of array «__curl_rule_01__» is negative
   __curl_rule_01__
Поправил в файле /usr/incluide/curl/curlbuild.h
строку
снимок42.png
снимок42.png (8.96 КБ) 5943 просмотра
на
снимок43.png
снимок43.png (8.24 КБ) 5943 просмотра
В чём проблемка , понять не могу :o
Последний раз редактировалось -=KabaL=- 13 июн 2017, 06:43, всего редактировалось 1 раз.

trs
Сообщения: 1939
Зарегистрирован: 07 сен 2015, 16:08
Operating system: -

Re: Ошибка: unknown type name «define»

Сообщение trs » 10 июн 2017, 11:26

В языке C символ # означает не начало комментария, а директиву препроцессора, то есть в строке с #define ошибки нет.
Почему не проходила проверка __curl_rule_01__ — это другой вопрос. Укажите хотя бы последовательность сборки.

Аватара пользователя
-=KabaL=-
Сообщения: 247
Зарегистрирован: 28 мар 2015, 12:46
Operating system: ROSA Desktop Fresh R5 release 2014.1 for x86_64

Re: Ошибка: unknown type name «define»

Сообщение -=KabaL=- » 10 июн 2017, 15:59

Зашёл в папку с исходником
начало

Код: Выделить всё

./install.sh
./configure
ответ

Код: Выделить всё

checking build system type... x86_64-unknown-linux-gnu
checking host system type... x86_64-unknown-linux-gnu
checking target system type... x86_64-unknown-linux-gnu
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... /bin/mkdir -p
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking whether make supports nested variables... yes
checking whether to enable maintainer-specific portions of Makefiles... no
checking for style of include used by make... GNU
checking for gcc... gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables... 
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking whether gcc understands -c and -o together... yes
checking dependency style of gcc... gcc3
checking for gcc option to accept ISO C99... -std=gnu99
checking how to run the C preprocessor... gcc -std=gnu99 -E
checking for grep that handles long lines and -e... /bin/grep
checking for egrep... /bin/grep -E
checking whether gcc -std=gnu99 needs -traditional... no
checking dependency style of gcc -std=gnu99... gcc3
checking for ranlib... ranlib
checking for g++... g++
checking whether we are using the GNU C++ compiler... yes
checking whether g++ accepts -g... yes
checking dependency style of g++... gcc3
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking sys/endian.h usability... no
checking sys/endian.h presence... no
checking for sys/endian.h... no
checking sys/param.h usability... yes
checking sys/param.h presence... yes
checking for sys/param.h... yes
checking syslog.h usability... yes
checking syslog.h presence... yes
checking for syslog.h... yes
checking for sys/sysctl.h... yes
checking whether be32dec is declared... no
checking whether le32dec is declared... no
checking whether be32enc is declared... no
checking whether le32enc is declared... no
checking whether le16dec is declared... no
checking whether le16enc is declared... no
checking for size_t... yes
checking for working alloca.h... yes
checking for alloca... yes
checking for getopt_long... yes
checking whether we can compile AVX code... yes
checking whether we can compile XOP code... yes
checking whether we can compile AVX2 code... yes
checking for json_loads in -ljansson... no
checking for pthread_create in -lpthread... yes
checking whether __uint128_t is supported... yes
checking that generated files are newer than configure... done
configure: creating ./config.status
config.status: creating Makefile
config.status: creating compat/Makefile
config.status: creating compat/jansson/Makefile
config.status: creating cpuminer-config.h
config.status: cpuminer-config.h is unchanged
config.status: executing depfiles commands
Пока всё хорошо Ответ с ошибками.

Код: Выделить всё

make  all-recursive
make[1]: вход в каталог «/home/kabal/Документы/Майнинг/cpuminer-multi-linux»
Making all in compat
make[2]: вход в каталог «/home/kabal/Документы/Майнинг/cpuminer-multi-linux/compat»
Making all in jansson
make[3]: вход в каталог «/home/kabal/Документы/Майнинг/cpuminer-multi-linux/compat/jansson»
make[3]: Цель «all» не требует выполнения команд.
make[3]: выход из каталога «/home/kabal/Документы/Майнинг/cpuminer-multi-linux/compat/jansson»
make[3]: вход в каталог «/home/kabal/Документы/Майнинг/cpuminer-multi-linux/compat»
make[3]: Цель «all-am» не требует выполнения команд.
make[3]: выход из каталога «/home/kabal/Документы/Майнинг/cpuminer-multi-linux/compat»
make[2]: выход из каталога «/home/kabal/Документы/Майнинг/cpuminer-multi-linux/compat»
make[2]: вход в каталог «/home/kabal/Документы/Майнинг/cpuminer-multi-linux»
gcc -std=gnu99 -DHAVE_CONFIG_H -I.  -fno-strict-aliasing -I./compat/jansson -I.  -Wno-pointer-sign -Wno-pointer-to-int-cast   -g -O2  -MT cpuminer-cpu-miner.o -MD -MP -MF .deps/cpuminer-cpu-miner.Tpo -c -o cpuminer-cpu-miner.o `test -f 'cpu-miner.c' || echo './'`cpu-miner.c
In file included from /usr/include/curl/curl.h:39:0,
                 from cpu-miner.c:26:
/usr/include/curl/curlrules.h:142:3: ошибка: size of array «__curl_rule_01__» is negative
   __curl_rule_01__
   ^
make[2]: *** [Makefile:1173: cpuminer-cpu-miner.o] Ошибка 1
make[2]: выход из каталога «/home/kabal/Документы/Майнинг/cpuminer-multi-linux»
make[1]: *** [Makefile:2512: all-recursive] Ошибка 1
make[1]: выход из каталога «/home/kabal/Документы/Майнинг/cpuminer-multi-linux»
make: *** [Makefile:569: all] Ошибка 2
Погуглив нашел способы по решению данной проблемы тут
Чёт видать вчера запарился и не те строки изменил как в последнем совете
Сейчас в правильных строках убрал # что бы они задействованы стали и теперь при компиляции
снимок46.png
По новой

Код: Выделить всё

make  all-recursive
make[1]: вход в каталог «/home/kabal/Документы/Майнинг/cpuminer-multi-linux»
Making all in compat
make[2]: вход в каталог «/home/kabal/Документы/Майнинг/cpuminer-multi-linux/compat»
Making all in jansson
make[3]: вход в каталог «/home/kabal/Документы/Майнинг/cpuminer-multi-linux/compat/jansson»
make[3]: Цель «all» не требует выполнения команд.
make[3]: выход из каталога «/home/kabal/Документы/Майнинг/cpuminer-multi-linux/compat/jansson»
make[3]: вход в каталог «/home/kabal/Документы/Майнинг/cpuminer-multi-linux/compat»
make[3]: Цель «all-am» не требует выполнения команд.
make[3]: выход из каталога «/home/kabal/Документы/Майнинг/cpuminer-multi-linux/compat»
make[2]: выход из каталога «/home/kabal/Документы/Майнинг/cpuminer-multi-linux/compat»
make[2]: вход в каталог «/home/kabal/Документы/Майнинг/cpuminer-multi-linux»
gcc -std=gnu99 -DHAVE_CONFIG_H -I.  -fno-strict-aliasing -I./compat/jansson -I.  -Wno-pointer-sign -Wno-pointer-to-int-cast   -g -O2  -MT cpuminer-cpu-miner.o -MD -MP -MF .deps/cpuminer-cpu-miner.Tpo -c -o cpuminer-cpu-miner.o `test -f 'cpu-miner.c' || echo './'`cpu-miner.c
In file included from /usr/include/curl/curl.h:38:0,
                 from cpu-miner.c:26:
/usr/include/curl/curlbuild.h:163:1: ошибка: unknown type name «define»
 define CURL_SIZEOF_LONG 4
 ^
/usr/include/curl/curlbuild.h:163:25: ошибка: expected «=», «,», «;», «asm» or «__attribute__» before numeric constant
 define CURL_SIZEOF_LONG 4
                         ^
/usr/include/curl/curlbuild.h:190:1: ошибка: unknown type name «define»
 define CURL_SIZEOF_CURL_OFF_T 8
 ^
/usr/include/curl/curlbuild.h:190:31: ошибка: expected «=», «,», «;», «asm» or «__attribute__» before numeric constant
 define CURL_SIZEOF_CURL_OFF_T 8
                               ^
In file included from /usr/include/curl/curl.h:39:0,
                 from cpu-miner.c:26:
/usr/include/curl/curlrules.h:79:4: ошибка: #error "CURL_SIZEOF_LONG definition is missing!"
 #  error "CURL_SIZEOF_LONG definition is missing!"
    ^
/usr/include/curl/curlrules.h:114:4: ошибка: #error "CURL_SIZEOF_CURL_OFF_T definition is missing!"
 #  error "CURL_SIZEOF_CURL_OFF_T definition is missing!"
    ^
/usr/include/curl/curlrules.h:153:6: ошибка: «CURL_SIZEOF_CURL_OFF_T» undeclared here (not in a function)
     [CurlchkszEQ(curl_off_t, CURL_SIZEOF_CURL_OFF_T)];
      ^
/usr/include/curl/curlrules.h:173:6: ошибка: «curl_socklen_t» undeclared here (not in a function)
     [CurlchkszEQ(curl_socklen_t, CURL_SIZEOF_CURL_SOCKLEN_T)];
      ^
make[2]: *** [Makefile:1173: cpuminer-cpu-miner.o] Ошибка 1
make[2]: выход из каталога «/home/kabal/Документы/Майнинг/cpuminer-multi-linux»
make[1]: *** [Makefile:2512: all-recursive] Ошибка 1
make[1]: выход из каталога «/home/kabal/Документы/Майнинг/cpuminer-multi-linux»
make: *** [Makefile:569: all] Ошибка 2
Продолжает ругаться ошибка: unknown type name «define»
Как я понимаю без этих строк при компиляции натыкается на массив __curl_rule_01__ , но его размер не верный и строки CURL_SIZEOF_LONG и CURL_SIZEOF_CURL_OFF_T уточняют размеры при компиляции.

trs
Сообщения: 1939
Зарегистрирован: 07 сен 2015, 16:08
Operating system: -

Re: Ошибка: unknown type name «define»

Сообщение trs » 10 июн 2017, 18:20

Не знаю, как это иначе объяснить, что бы было понятно. #define это слово целиком. Без # смысл совершенно иной и убирать этот символ нельзя.

И, кстати, по ссылке про ошибку сказано в том ответе, что отмечен как верный. "libcurl собрана под другую архитектуру".
Вот как определён макрос в заголовочном файле /usr/include/curl/curlbuild.h на моей системе после установки командой urpmi curl-devel

Код: Выделить всё

/* The size of `long', as computed by sizeof. */
#define CURL_SIZEOF_LONG 8
Ошибка в том, что откуда-то взялся файл с 4. Менять 4 на 8 тоже не надо. Надо установить корректную версию.

И еще, для сборки — там же написано — запускать build.sh

Аватара пользователя
-=KabaL=-
Сообщения: 247
Зарегистрирован: 28 мар 2015, 12:46
Operating system: ROSA Desktop Fresh R5 release 2014.1 for x86_64

Re: Ошибка: unknown type name «define»

Сообщение -=KabaL=- » 11 июн 2017, 10:54

trs писал(а):Не знаю, как это иначе объяснить, что бы было понятно. #define это слово целиком. Без # смысл совершенно иной и убирать этот символ нельзя.
Понял , учту на будущее
trs писал(а):И еще, для сборки — там же написано — запускать build.sh
Проверил , да всё что в ручную запускал компиляцию делает build.sh
trs писал(а):Надо установить корректную версию
Выходит так , но как определить эту корректную версию :oops:

Ответить

Вернуться в «Обсуждение ROSA Fresh R4 - R8 (платформа 2014.1)»