LINUX.ORG.RU

Сборка openocd для raspberry pi pico под fedora

 , , ,


1

1

Здравствуйте. Я пытался собрать отладчик по этой https://datasheets.raspberrypi.org/pico/getting-started-with-pico.pdf инструкции.

$ cd ~/pico$ sudo apt install automake autoconf build-essential texinfo libtool libftdi-dev libusb-1.0-0-dev
$ git clone https://github.com/raspberrypi/openocd.git --branch picoprobe --depth=1 --no-single-branch
$ cd openocd
$ ./bootstrap
$ ./configure --enable-picoprobe
$ make -j4
$ sudo make install

make -j4 пишет:

...
libtool: compile:  gcc -DHAVE_CONFIG_H -I. -I./src -I./src -I./src/helper -DPKGDATADIR=\"/usr/local/share/openocd\" -DBINDIR=\"/usr/local/bin\" -I./jimtcl -I./jimtcl -Wall -Wstrict-prototypes -Wformat-security -Wshadow -Wextra -Wno-unused-parameter -Wbad-function-cast -Wcast-align -Wredundant-decls -Werror -g -O2 -MT src/flash/nor/numicro.lo -MD -MP -MF src/flash/nor/.deps/numicro.Tpo -c src/flash/nor/numicro.c -o src/flash/nor/numicro.o
depbase=`echo src/flash/nor/pic32mx.lo | sed 's|[^/]*$|.deps/&|;s|\.lo$||'`;\
/bin/sh ./libtool  --tag=CC   --mode=compile gcc -DHAVE_CONFIG_H -I.   -I./src -I./src -I./src/helper -DPKGDATADIR=\"/usr/local/share/openocd\" -DBINDIR=\"/usr/local/bin\" -I./jimtcl -I./jimtcl  -Wall -Wstrict-prototypes -Wformat-security -Wshadow -Wextra -Wno-unused-parameter -Wbad-function-cast -Wcast-align -Wredundant-decls -Werror -g -O2 -MT src/flash/nor/pic32mx.lo -MD -MP -MF $depbase.Tpo -c -o src/flash/nor/pic32mx.lo src/flash/nor/pic32mx.c &&\
mv -f $depbase.Tpo $depbase.Plo
src/flash/nor/numicro.c: В функции «numicro_fmc_cmd»:
src/flash/nor/numicro.c:1244:17: ошибка: эта «if» клаузула не защищает... [-Werror=misleading-indentation]
 1244 |                 if (retval != ERROR_OK)
      |                 ^~
In file included from ./src/flash/common.h:21,
                 from src/flash/nor/core.h:25,
                 from src/flash/nor/imp.h:24,
                 from src/flash/nor/numicro.c:32:
./src/helper/log.h:119:9: замечание: ...этот оператор, но последний ошибочно полагается на защиту «if»
  119 |         do { \
      |         ^~
src/flash/nor/numicro.c:1246:25: замечание: в расширении макроса «LOG_DEBUG»
 1246 |                         LOG_DEBUG("status: 0x%" PRIx32 "", status);
      |                         ^~~~~~~~~
src/flash/nor/numicro.c: В функции «numicro_erase»:
src/flash/nor/numicro.c:1513:25: ошибка: эта «if» клаузула не защищает... [-Werror=misleading-indentation]
 1513 |                         if (retval != ERROR_OK)
      |                         ^~
In file included from ./src/flash/common.h:21,
                 from src/flash/nor/core.h:25,
                 from src/flash/nor/imp.h:24,
                 from src/flash/nor/numicro.c:32:
./src/helper/log.h:119:9: замечание: ...этот оператор, но последний ошибочно полагается на защиту «if»
  119 |         do { \
      |         ^~
src/flash/nor/numicro.c:1515:33: замечание: в расширении макроса «LOG_DEBUG»
 1515 |                                 LOG_DEBUG("status: 0x%" PRIx32 "", status);
      |                                 ^~~~~~~~~
src/flash/nor/numicro.c: В функции «numicro_write»:
src/flash/nor/numicro.c:1602:33: ошибка: эта «if» клаузула не защищает... [-Werror=misleading-indentation]
 1602 |                                 if (retval != ERROR_OK)
      |                                 ^~
In file included from ./src/flash/common.h:21,
                 from src/flash/nor/core.h:25,
                 from src/flash/nor/imp.h:24,
                 from src/flash/nor/numicro.c:32:
./src/helper/log.h:119:9: замечание: ...этот оператор, но последний ошибочно полагается на защиту «if»
  119 |         do { \
      |         ^~
src/flash/nor/numicro.c:1604:41: замечание: в расширении макроса «LOG_DEBUG»
 1604 |                                         LOG_DEBUG("status: 0x%" PRIx32 "", status);
      |                                         ^~~~~~~~~
depbase=`echo src/flash/nor/psoc4.lo | sed 's|[^/]*$|.deps/&|;s|\.lo$||'`;\
/bin/sh ./libtool  --tag=CC   --mode=compile gcc -DHAVE_CONFIG_H -I.   -I./src -I./src -I./src/helper -DPKGDATADIR=\"/usr/local/share/openocd\" -DBINDIR=\"/usr/local/bin\" -I./jimtcl -I./jimtcl  -Wall -Wstrict-prototypes -Wformat-security -Wshadow -Wextra -Wno-unused-parameter -Wbad-function-cast -Wcast-align -Wredundant-decls -Werror -g -O2 -MT src/flash/nor/psoc4.lo -MD -MP -MF $depbase.Tpo -c -o src/flash/nor/psoc4.lo src/flash/nor/psoc4.c &&\
mv -f $depbase.Tpo $depbase.Plo
libtool: compile:  gcc -DHAVE_CONFIG_H -I. -I./src -I./src -I./src/helper -DPKGDATADIR=\"/usr/local/share/openocd\" -DBINDIR=\"/usr/local/bin\" -I./jimtcl -I./jimtcl -Wall -Wstrict-prototypes -Wformat-security -Wshadow -Wextra -Wno-unused-parameter -Wbad-function-cast -Wcast-align -Wredundant-decls -Werror -g -O2 -MT src/flash/nor/pic32mx.lo -MD -MP -MF src/flash/nor/.deps/pic32mx.Tpo -c src/flash/nor/pic32mx.c -o src/flash/nor/pic32mx.o
depbase=`echo src/flash/nor/psoc5lp.lo | sed 's|[^/]*$|.deps/&|;s|\.lo$||'`;\
/bin/sh ./libtool  --tag=CC   --mode=compile gcc -DHAVE_CONFIG_H -I.   -I./src -I./src -I./src/helper -DPKGDATADIR=\"/usr/local/share/openocd\" -DBINDIR=\"/usr/local/bin\" -I./jimtcl -I./jimtcl  -Wall -Wstrict-prototypes -Wformat-security -Wshadow -Wextra -Wno-unused-parameter -Wbad-function-cast -Wcast-align -Wredundant-decls -Werror -g -O2 -MT src/flash/nor/psoc5lp.lo -MD -MP -MF $depbase.Tpo -c -o src/flash/nor/psoc5lp.lo src/flash/nor/psoc5lp.c &&\
mv -f $depbase.Tpo $depbase.Plo
cc1: все предупреждения считаются ошибками
make[2]: *** [Makefile:3552: src/flash/nor/numicro.lo] Ошибка 1
make[2]: *** Ожидание завершения заданий…
libtool: compile:  gcc -DHAVE_CONFIG_H -I. -I./src -I./src -I./src/helper -DPKGDATADIR=\"/usr/local/share/openocd\" -DBINDIR=\"/usr/local/bin\" -I./jimtcl -I./jimtcl -Wall -Wstrict-prototypes -Wformat-security -Wshadow -Wextra -Wno-unused-parameter -Wbad-function-cast -Wcast-align -Wredundant-decls -Werror -g -O2 -MT src/flash/nor/psoc4.lo -MD -MP -MF src/flash/nor/.deps/psoc4.Tpo -c src/flash/nor/psoc4.c -o src/flash/nor/psoc4.o
libtool: compile:  gcc -DHAVE_CONFIG_H -I. -I./src -I./src -I./src/helper -DPKGDATADIR=\"/usr/local/share/openocd\" -DBINDIR=\"/usr/local/bin\" -I./jimtcl -I./jimtcl -Wall -Wstrict-prototypes -Wformat-security -Wshadow -Wextra -Wno-unused-parameter -Wbad-function-cast -Wcast-align -Wredundant-decls -Werror -g -O2 -MT src/flash/nor/psoc5lp.lo -MD -MP -MF src/flash/nor/.deps/psoc5lp.Tpo -c src/flash/nor/psoc5lp.c -o src/flash/nor/psoc5lp.o
make[2]: выход из каталога «/home/andrey/pico/openocd»
make[1]: *** [Makefile:5212: all-recursive] Ошибка 1
make[1]: выход из каталога «/home/andrey/pico/openocd»
make: *** [Makefile:2135: all] Ошибка 2

Что делать? Кстати, как установить отладчик gdb для arm на fedora?

Зараннее спасибо



Последнее исправление: AndreyPr (всего исправлений: 1)

Надо найти, где добавляется -Werror и убрать его. Можно тупо отредактировать Makefile, чтобы не искать как этот флаг включается и почему он включен в данном случае.

xaizek ★★★★★
()
Ответ на: комментарий от AndreyPr

-k это не то, оно и не должно было помочь. -Werror передаётся компилятору, а не make.

xaizek ★★★★★
()
Ответ на: комментарий от t20

Вы видели на что он ругается? Исходя из форматирования, компилятор думает, что код будет вести себя не так, как хочет программист. Причем скорее всего это действительно ошибки, которые стоит исправить в любом случае.

COKPOWEHEU
()
Ответ на: комментарий от AndreyPr

Раз make работает, то где-то Makefile должен быть (в принципе бывают и другие названия). Я глянул на исходники, надо просто делать не

./configure --enable-picoprobe

а

./configure --enable-picoprobe --disable-werror
xaizek ★★★★★
()
Последнее исправление: xaizek (всего исправлений: 1)
Ответ на: комментарий от xaizek

А что делать с picotool? Тут ошибка серьезнее

[andrey@fedora picotool]$ cmake ./
Using PICO_SDK_PATH from environment ('/home/andrey/pico/pico-sdk')
-- Configuring done
-- Generating done
-- Build files have been written to: /home/andrey/pico/picotool
[andrey@fedora picotool]$ make
[ 25%] Building CXX object CMakeFiles/picotool.dir/main.cpp.o
In file included from /home/andrey/pico/picotool/main.cpp:11:
/home/andrey/pico/picotool/cli.h: В функции-члене «D& cli::matchable_derived<T>::repeatable()»:
/home/andrey/pico/picotool/cli.h:257:25: ошибка: «numeric_limits» не является элементом «std»
  257 |             _max = std::numeric_limits<int>::max();
      |                         ^~~~~~~~~~~~~~
/home/andrey/pico/picotool/cli.h:257:40: ошибка: expected primary-expression before «int»
  257 |             _max = std::numeric_limits<int>::max();
      |                                        ^~~
/home/andrey/pico/picotool/cli.h: На глобальном уровне:
/home/andrey/pico/picotool/cli.h:444:31: ошибка: «numeric_limits» не является элементом «std»
  444 |         int _max_value = std::numeric_limits<int>::max();
      |                               ^~~~~~~~~~~~~~
/home/andrey/pico/picotool/cli.h:444:46: ошибка: expected primary-expression before «int»
  444 |         int _max_value = std::numeric_limits<int>::max();
      |                                              ^~~
/home/andrey/pico/picotool/cli.h: В lambda функции:
/home/andrey/pico/picotool/cli.h:408:36: ошибка: «numeric_limits» не является элементом «std»
  408 |                 long lvalue = std::numeric_limits<long>::max();
      |                                    ^~~~~~~~~~~~~~
/home/andrey/pico/picotool/cli.h:408:51: ошибка: expected primary-expression before «long»
  408 |                 long lvalue = std::numeric_limits<long>::max();
      |                                                   ^~~~
/home/andrey/pico/picotool/cli.h: На глобальном уровне:
/home/andrey/pico/picotool/cli.h:500:40: ошибка: «numeric_limits» не является элементом «std»
  500 |         unsigned int _max_value = std::numeric_limits<unsigned int>::max();
      |                                        ^~~~~~~~~~~~~~
/home/andrey/pico/picotool/cli.h:500:55: ошибка: expected primary-expression before «unsigned»
  500 |         unsigned int _max_value = std::numeric_limits<unsigned int>::max();
      |                                                       ^~~~~~~~
/home/andrey/pico/picotool/cli.h: В lambda функции:
/home/andrey/pico/picotool/cli.h:460:36: ошибка: «numeric_limits» не является элементом «std»
  460 |                 long lvalue = std::numeric_limits<long>::max();
      |                                    ^~~~~~~~~~~~~~
/home/andrey/pico/picotool/cli.h:460:51: ошибка: expected primary-expression before «long»
  460 |                 long lvalue = std::numeric_limits<long>::max();
      |                                                   ^~~~
make[2]: *** [CMakeFiles/picotool.dir/build.make:82: CMakeFiles/picotool.dir/main.cpp.o] Ошибка 1
make[1]: *** [CMakeFiles/Makefile2:199: CMakeFiles/picotool.dir/all] Ошибка 2
make: *** [Makefile:103: all] Ошибка 2

Возможно ли это исправить, не переписывая чужую программу?

AndreyPr
() автор топика
Последнее исправление: AndreyPr (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.