error: ‘_1’ was not declared in this scope (Как это корректно лечить?)
Модератор: /dev/random
error: ‘_1’ was not declared in this scope
Доброго времени суток!
Некоторое время тому назад встретилась мне эта ошибка (которая в заголовке) при сборке нескольких пакетов.
Что-то удалось победить путём изменения строки в /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. Раньше этот пакет у меня собирался. По крайней мере сейчас он собран, но при обновлении мира хочет пересобраться... и не получается.
Некоторое время тому назад встретилась мне эта ошибка (которая в заголовке) при сборке нескольких пакетов.
Что-то удалось победить путём изменения строки в /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. Раньше этот пакет у меня собирался. По крайней мере сейчас он собран, но при обновлении мира хочет пересобраться... и не получается.
Re: error: ‘_1’ was not declared in this scope
Код: Выделить всё
/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.»
Поставь букву "Ё" на место еЁ!
Re: error: ‘_1’ was not declared in this scope
Возможно, что его человеческий язык от моего отличается. Я просто не понимаю, что компилятор хочет - во всех файлах, где встречается эта ошибка добавить #include <boost/bind/bind.hpp> и using namespace boost::placeholders? Их же может быть 100500.
Re: error: ‘_1’ was not declared in this scope
Placeholders давно в std. Может их из boost выкинули или опять что-то поменяли — они это любят
Re: error: ‘_1’ was not declared in this scope
Может и давно, я не в курсе.
Пробовал в проблемном файле менять _1 на std::placeholders::_1. Конкретно эта ошибка исчезает, но появляются другие.
Это по-другому должно решаться. Собиралось же раньше...
Пробовал в проблемном файле менять _1 на std::placeholders::_1. Конкретно эта ошибка исчезает, но появляются другие.
Это по-другому должно решаться. Собиралось же раньше...
Re: error: ‘_1’ was not declared in this scope
Похоже заголовки из STL и boost подрались. Плохо это: наскоком скорее всего не взять, придётся код чистить
Re: error: ‘_1’ was not declared in this scope
А в вашей Fedora какая версия этого gnuradio? Может оттуда можно патчи взять?
- Bizdelnick
- Модератор
- Сообщения: 20752
- Статус: nulla salus bello
- ОС: Debian GNU/Linux
Re: error: ‘_1’ was not declared in this scope
Код: Выделить всё
CPPFLAGS += -DBOOST_BIND_GLOBAL_PLACEHOLDERS
Добавлено (02:27):
Верните взад, а то вообще всё сломается. CFLAGS — переменная с флагами для компилятора C, а Вы ему плюсовый стандарт подсовываете, да ещё глобально.
Пишите правильно:
в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
Re: error: ‘_1’ was not declared in this scope
Это я уже от отчаяния. Просто мне так проще быстро добавить, потом закомментировать.Bizdelnick писал: ↑24.05.2020 02:25Верните взад, а то вообще всё сломается. CFLAGS — переменная с флагами для компилятора C, а Вы ему плюсовый стандарт подсовываете, да ещё глобально.
Вернул, конечно.
Сейчас там
Код: Выделить всё
CFLAGS="-O2 -march=native -pipe"
CXXFLAGS="${CFLAGS}"
CPPFLAGS="${CFLAGS} -DBOOST_BIND_GLOBAL_PLACEHOLDERS"
- Bizdelnick
- Модератор
- Сообщения: 20752
- Статус: nulla salus bello
- ОС: Debian GNU/Linux
Re: error: ‘_1’ was not declared in this scope
Не надо запихивать CFLAGS внутрь CPPFLAGS, им там не место.
Показывайте лог (с командой компиляции проблемного файла и её выводом). Если переменная CPPFLAGS игнорируется (опция не попадает в командную строку компилятора), добавьте эту опцию в CXXFLAGS.
Пишите правильно:
в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
Re: error: ‘_1’ was not declared in this scope
Попробовал добавить в CXXFLAGS. Результат тот же. Добавляю лог.
- Вложения
-
- build.log
- (909.82 КБ) 16 скачиваний
- Bizdelnick
- Модератор
- Сообщения: 20752
- Статус: nulla salus bello
- ОС: Debian GNU/Linux
Re: error: ‘_1’ was not declared in this scope
Странно, заглянул в код — этот макрос влияет только на вывод предупреждения. По идее всё должно работать и без него, только ругаться. Попробуйте написать разрабам gnuradio, они быстрее разберутся.
Пишите правильно:
в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
Re: error: ‘_1’ was not declared in this scope
У gnuradio, судя по его родному сайту, уже более новая версия есть.
Я, с подобной ошибкой, вообще, сталкиваюсь впервые. А писать... да я как-то сам обычно справлялся, своими патчами...
Посмотрю код более новой версии.
P.S. В 3.7.14.0 код проблемного файла такой же. Побайтно не проверял, но проблемные строки те же.
Я, с подобной ошибкой, вообще, сталкиваюсь впервые. А писать... да я как-то сам обычно справлялся, своими патчами...
Посмотрю код более новой версии.
P.S. В 3.7.14.0 код проблемного файла такой же. Побайтно не проверял, но проблемные строки те же.
- Bizdelnick
- Модератор
- Сообщения: 20752
- Статус: nulla salus bello
- ОС: Debian GNU/Linux
Re: error: ‘_1’ was not declared in this scope
Ну что за эгоизм? А другим как? ☺
Пишите правильно:
в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
Re: error: ‘_1’ was not declared in this scope
А другие пускай на этот форум заходят. Если найду решение, патч выложу сюда. Ну, или на багзиллу, если не лень будет регистрироваться...
P.S. Интересно, а в других дистрибутивах (бинарных) какая версия gnuradio?
- Bizdelnick
- Модератор
- Сообщения: 20752
- Статус: nulla salus bello
- ОС: Debian GNU/Linux
Re: error: ‘_1’ was not declared in this scope
Они могли бы совсем не сталкиваться с этой ошибкой, если бы её быстро пофиксили в апстриме. Не говоря о том, что далеко не все станут искать решение на русскоязычном форуме.
Добавлено (14:45):
https://packages.debian.org/search?keywords=gnuradio&searchon=names&exact=1&suite=all§ion=all
Пишите правильно:
в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
Re: error: ‘_1’ was not declared in this scope
Ну, если нет решения от разработчиков дистрибутива, то, обычно, просто ищут в гугле. Например, я часто нахожу решения проблем на китайских сайтах. Вряд ли люди будут сознательно отказываться от "русскоязычного форума", если им надо "ехать, а не шашечки"
P.S. Хм. А там аж 3.8.1 и оно, скорее всего, даже работает. Интересно.
Re: error: ‘_1’ was not declared in this scope
Временное решение проблемы:
Код: Выделить всё
echo "=dev-libs/boost-1.73.0" >> /etc/portage/package.mask/custom