Неустранимая ошибка Oneapi: сравните: нет такого файла или каталога после перезапуска системы

У меня есть проект, над которым я работаю для исследования более года, Oneapi интегрируется более 6 месяцев, все работает и все. Вчера я обновил тестовый код и запустил тесты, ничего необычного. Сегодня я перезапустил свою машину (Ubuntu 20.04.2 LTS, 64 бита) для обновлений, и теперь, когда я пытаюсь скомпилировать проект, он дает:

      In file included from /opt/intel/oneapi/tbb/2021.2.0/env/../include/oneapi/tbb/enumerable_thread_specific.h:26,
                 from /opt/intel/oneapi/tbb/2021.2.0/env/../include/oneapi/tbb/combinable.h:22,
                 from /opt/intel/oneapi/tbb/2021.2.0/env/../include/oneapi/tbb.h:35,
                 from ...file name omitted for privacy...
/opt/intel/oneapi/tbb/2021.2.0/env/../include/oneapi/tbb/concurrent_vector.h:33:10: fatal error: compare: No such file or directory
   33 | #include <compare>
      |          ^~~~~~~~~
compilation terminated.

Это произошло только после перезапуска системы (возможно, были нарушены некоторые ссылки?) И происходит только в файлах, для которых требуется concurrent_vector.h

В идеале я бы предпочел исправление, которое не требует переустановки oneapi, apt-get update с последующим apt-get upgrade не исправил, и не перезапустил систему снова.

1 ответ

Решение

Просто наткнулся на то же самое. Похоже, что TBB автоматически включает <compare> если вы компилируете с -std=c++20:

https://github.com/oneapi-src/oneTBB/blob/9e15720bc7744f85dff611d34d65e9099e077da4/include/oneapi/tbb/detail/_config.h#L253

      #define __TBB_CPP20_COMPARISONS_PRESENT                 __TBB_CPP20_PRESENT

GCC только добавил заголовок сравнения в libstdc++-10.

Для меня это похоже на ошибку в TBB. Я открыл здесь вопрос .

В качестве исправления я смог понизить версию своего проекта до C++17. Если это не вариант, вы можете подумать о копировании detail/_config.h, определяя __TBB_CPP20_COMPARISONS_PRESENT 0в свою копию и включив ее перед включением любого заголовка TBB. Охрана включения должна гарантировать, что ваша версия заменяет сломанную версию TBB.

Другие вопросы по тегам