error: ‘_1’ was not declared in this scope (Как это корректно лечить?)

Sabayon, Calculate, Funtoo, Exherbo

Модератор: /dev/random

Аватара пользователя
devilr
Сообщения: 2071
ОС: Mandriva => Gentoo (~amd64)

error: ‘_1’ was not declared in this scope

Сообщение devilr »

Доброго времени суток!
Некоторое время тому назад встретилась мне эта ошибка (которая в заголовке) при сборке нескольких пакетов.
Что-то удалось победить путём изменения строки в /etc/make.conf
с
CFLAGS="-O2 -march=native -pipe "
на
CFLAGS="-O2 -march=native -pipe -std=c++11 "
А вот с net-wireless/gnuradio-3.7.13.5-r3 так не получается. Именно эта ошибка есть в багзилле https://bugs.gentoo.org/722100. Но ответа нет.
Как это можно вылечить? Может кто сталкивался?
P.S. Раньше этот пакет у меня собирался. По крайней мере сейчас он собран, но при обновлении мира хочет пересобраться... и не получается.
Мудрость приходит с возрастом.
Иногда возраст приходит один.
Спасибо сказали:

Аватара пользователя
ArtSh
Сообщения: 431
ОС: Gentoo

Re: error: ‘_1’ was not declared in this scope

Сообщение ArtSh »

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

/usr/include/boost/bind.hpp:36:1: замечание: «#pragma message: The practice of declaring the Bind placeholders (_1, _2, ...) in the global namespace is deprecated. Please use <boost/bind/bind.hpp> + using namespace boost::placeholders, or define BOOST_BIND_GLOBAL_PLACEHOLDERS to retain the current behavior.»
Сам компилятор человеческим языком говорит!
Поставь букву "Ё" на место еЁ!
Спасибо сказали:

Аватара пользователя
devilr
Сообщения: 2071
ОС: Mandriva => Gentoo (~amd64)

Re: error: ‘_1’ was not declared in this scope

Сообщение devilr »

Возможно, что его человеческий язык от моего отличается. Я просто не понимаю, что компилятор хочет - во всех файлах, где встречается эта ошибка добавить #include <boost/bind/bind.hpp> и using namespace boost::placeholders? Их же может быть 100500.
Мудрость приходит с возрастом.
Иногда возраст приходит один.
Спасибо сказали:

Аватара пользователя
s.xbatob
Сообщения: 977
ОС: Fedora

Re: error: ‘_1’ was not declared in this scope

Сообщение s.xbatob »

Placeholders давно в std. Может их из boost выкинули или опять что-то поменяли — они это любят
Спасибо сказали:

Аватара пользователя
devilr
Сообщения: 2071
ОС: Mandriva => Gentoo (~amd64)

Re: error: ‘_1’ was not declared in this scope

Сообщение devilr »

Может и давно, я не в курсе.
Пробовал в проблемном файле менять _1 на std::placeholders::_1. Конкретно эта ошибка исчезает, но появляются другие.
Это по-другому должно решаться. Собиралось же раньше...
Мудрость приходит с возрастом.
Иногда возраст приходит один.
Спасибо сказали:

Аватара пользователя
s.xbatob
Сообщения: 977
ОС: Fedora

Re: error: ‘_1’ was not declared in this scope

Сообщение s.xbatob »

Похоже заголовки из STL и boost подрались. Плохо это: наскоком скорее всего не взять, придётся код чистить :(
Спасибо сказали:

Аватара пользователя
devilr
Сообщения: 2071
ОС: Mandriva => Gentoo (~amd64)

Re: error: ‘_1’ was not declared in this scope

Сообщение devilr »

А в вашей Fedora какая версия этого gnuradio? Может оттуда можно патчи взять?
Мудрость приходит с возрастом.
Иногда возраст приходит один.
Спасибо сказали:

Аватара пользователя
Bizdelnick
Модератор
Сообщения: 16831
Статус: grammatikführer
ОС: Debian GNU/Linux

Re: error: ‘_1’ was not declared in this scope

Сообщение Bizdelnick »

devilr писал(а):
24.05.2020 00:00
Возможно, что его человеческий язык от моего отличается. Я просто не понимаю, что компилятор хочет

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

CPPFLAGS += -DBOOST_BIND_GLOBAL_PLACEHOLDERS
Добавлено (02:27):
devilr писал(а):
23.05.2020 23:26
Что-то удалось победить путём изменения строки в /etc/make.conf
с
CFLAGS="-O2 -march=native -pipe "
на
CFLAGS="-O2 -march=native -pipe -std=c++11 "
Верните взад, а то вообще всё сломается. CFLAGS — переменная с флагами для компилятора C, а Вы ему плюсовый стандарт подсовываете, да ещё глобально.
Пишите правильно:
в консоли
вкупе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:

Аватара пользователя
devilr
Сообщения: 2071
ОС: Mandriva => Gentoo (~amd64)

Re: error: ‘_1’ was not declared in this scope

Сообщение devilr »

Bizdelnick писал:
24.05.2020 02:25
Верните взад, а то вообще всё сломается. CFLAGS — переменная с флагами для компилятора C, а Вы ему плюсовый стандарт подсовываете, да ещё глобально.
Это я уже от отчаяния. Просто мне так проще быстро добавить, потом закомментировать.
Вернул, конечно.
Сейчас там

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

CFLAGS="-O2 -march=native -pipe"
CXXFLAGS="${CFLAGS}"
CPPFLAGS="${CFLAGS} -DBOOST_BIND_GLOBAL_PLACEHOLDERS"
Но чуда не произошло - ошибка та же. :(
Мудрость приходит с возрастом.
Иногда возраст приходит один.
Спасибо сказали:

Аватара пользователя
Bizdelnick
Модератор
Сообщения: 16831
Статус: grammatikführer
ОС: Debian GNU/Linux

Re: error: ‘_1’ was not declared in this scope

Сообщение Bizdelnick »

devilr писал(а):
24.05.2020 02:36
CPPFLAGS="${CFLAGS} -DBOOST_BIND_GLOBAL_PLACEHOLDERS"
Не надо запихивать CFLAGS внутрь CPPFLAGS, им там не место.
devilr писал(а):
24.05.2020 02:36
Но чуда не произошло - ошибка та же.
Показывайте лог (с командой компиляции проблемного файла и её выводом). Если переменная CPPFLAGS игнорируется (опция не попадает в командную строку компилятора), добавьте эту опцию в CXXFLAGS.
Пишите правильно:
в консоли
вкупе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:

Аватара пользователя
devilr
Сообщения: 2071
ОС: Mandriva => Gentoo (~amd64)

Re: error: ‘_1’ was not declared in this scope

Сообщение devilr »

Попробовал добавить в CXXFLAGS. Результат тот же. Добавляю лог.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Мудрость приходит с возрастом.
Иногда возраст приходит один.
Спасибо сказали:

Аватара пользователя
Bizdelnick
Модератор
Сообщения: 16831
Статус: grammatikführer
ОС: Debian GNU/Linux

Re: error: ‘_1’ was not declared in this scope

Сообщение Bizdelnick »

Странно, заглянул в код — этот макрос влияет только на вывод предупреждения. По идее всё должно работать и без него, только ругаться. Попробуйте написать разрабам gnuradio, они быстрее разберутся.
Пишите правильно:
в консоли
вкупе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:

Аватара пользователя
devilr
Сообщения: 2071
ОС: Mandriva => Gentoo (~amd64)

Re: error: ‘_1’ was not declared in this scope

Сообщение devilr »

У gnuradio, судя по его родному сайту, уже более новая версия есть.
Я, с подобной ошибкой, вообще, сталкиваюсь впервые. А писать... да я как-то сам обычно справлялся, своими патчами...
Посмотрю код более новой версии.
P.S. В 3.7.14.0 код проблемного файла такой же. Побайтно не проверял, но проблемные строки те же.
Мудрость приходит с возрастом.
Иногда возраст приходит один.
Спасибо сказали:

Аватара пользователя
Bizdelnick
Модератор
Сообщения: 16831
Статус: grammatikführer
ОС: Debian GNU/Linux

Re: error: ‘_1’ was not declared in this scope

Сообщение Bizdelnick »

devilr писал(а):
24.05.2020 12:03
я как-то сам обычно справлялся, своими патчами...
Ну что за эгоизм? А другим как? ☺
Пишите правильно:
в консоли
вкупе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:

Аватара пользователя
devilr
Сообщения: 2071
ОС: Mandriva => Gentoo (~amd64)

Re: error: ‘_1’ was not declared in this scope

Сообщение devilr »

Bizdelnick писал:
24.05.2020 12:24
Ну что за эгоизм? А другим как? ☺
А другие пускай на этот форум заходят. Если найду решение, патч выложу сюда. Ну, или на багзиллу, если не лень будет регистрироваться...
P.S. Интересно, а в других дистрибутивах (бинарных) какая версия gnuradio?
Мудрость приходит с возрастом.
Иногда возраст приходит один.
Спасибо сказали:

Аватара пользователя
Bizdelnick
Модератор
Сообщения: 16831
Статус: grammatikführer
ОС: Debian GNU/Linux

Re: error: ‘_1’ was not declared in this scope

Сообщение Bizdelnick »

devilr писал(а):
24.05.2020 12:27
А другие пускай на этот форум заходят. Если найду решение, патч выложу сюда. Ну, или на багзиллу, если не лень будет регистрироваться...
Они могли бы совсем не сталкиваться с этой ошибкой, если бы её быстро пофиксили в апстриме. Не говоря о том, что далеко не все станут искать решение на русскоязычном форуме.
Добавлено (14:45):
devilr писал(а):
24.05.2020 12:27
Интересно, а в других дистрибутивах (бинарных) какая версия gnuradio?
https://packages.debian.org/search?keywords=gnuradio&searchon=names&exact=1&suite=all&section=all
Пишите правильно:
в консоли
вкупе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:

Аватара пользователя
devilr
Сообщения: 2071
ОС: Mandriva => Gentoo (~amd64)

Re: error: ‘_1’ was not declared in this scope

Сообщение devilr »

Bizdelnick писал:
24.05.2020 14:42
далеко не все станут искать решение на русскоязычном форуме
Ну, если нет решения от разработчиков дистрибутива, то, обычно, просто ищут в гугле. Например, я часто нахожу решения проблем на китайских сайтах. Вряд ли люди будут сознательно отказываться от "русскоязычного форума", если им надо "ехать, а не шашечки" :)
P.S. Хм. А там аж 3.8.1 и оно, скорее всего, даже работает. Интересно.
Мудрость приходит с возрастом.
Иногда возраст приходит один.
Спасибо сказали:

Аватара пользователя
devilr
Сообщения: 2071
ОС: Mandriva => Gentoo (~amd64)

Re: error: ‘_1’ was not declared in this scope

Сообщение devilr »

Временное решение проблемы:

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

echo "=dev-libs/boost-1.73.0" >> /etc/portage/package.mask/custom
Мудрость приходит с возрастом.
Иногда возраст приходит один.
Спасибо сказали: