Сборка ncurses при помощи gcc 5

Если волею судьбы Вам понадобилось собрать ncurses при помощи gcc 5 или выше, то скорее всего вы увидите такую ошибку:

ncurses-5.9/ncurses/curses.priv.h:283:0,
                  from ../ncurses/lib_gen.c:19:
 _744.c:835:15: error: expected ')' before 'int'
 ../include/curses.h:1594:56: note: in definition of macro 'mouse_trafo'
  #define mouse_trafo(y,x,to_screen) wmouse_trafo(stdscr,y,x,to_screen)

Бедово конечно, но все довольно просто. В компиляторе что-то изменили и исходники больше не собираются.
Я нашел патч. Пока его не одобрили, но он работает.
Скачать можно тут: https://git.sagemath.org/sage.git/diff/build/pkgs/ncurses/patches/work_ar…
Ну или можно ручками поправить файл ncurses/base/MKlib_gen.sh:

if test "${LC_COLLATE+set}"  = set; then LC_COLLATE=C;  export LC_COLLATE;  fi

# Work around "unexpected" output of GCC 5.1.0's cpp w.r.t. #line directives
# by simply suppressing them:
case `$1 -dumpversion 2>/dev/null` in
    5.[01].*)  # assume a "broken" one
        preprocessor="$1 -P -DNCURSES_INTERNALS -I../include"
        ;;
    *)
        preprocessor="$1 -DNCURSES_INTERNALS -I../include"
esac
AWK="$2"
USE="$3"

Вместо такого:

preprocessor="$1 -DNCURSES_INTERNALS -I../include"

После этого собирается обычным путем.

Похожий код:

Фото аватара
Алексей Петров

Программист, разработчик с 5 летним опытом работы. Учусь на разработчика игр на Unity и разработчика VR&AR реальности (виртуальной реальности). Основные языки программирования: C#, C++.

Оцените автора
Бла, бла код
Добавить комментарий