недопустимая инструкция в надстройке :: григорианский :: дата :: дата

У меня есть программа C ++, которая использует boost (в основном Logger). Эта программа компилируется и хорошо работает на Windows и Ubuntu. Однако, когда я пытаюсь перенести его на Linux Yocto на встроенной системе (процессор Intel Atom), во время выполнения я получаю ошибку недопустимых инструкций.

Сама программа построена на Ubuntu PC с Intel-i5.

Я отладил проблему, и это были некоторые инструкции AVX из другой библиотеки (OpenCV). Я отключил все AVX, и проблема решена, но возникла другая проблема.

Теперь он говорит мне, что (после прочтения ядра тупой с помощью gdb):

Программа завершена с сигналом SIGILL, незаконное указание.
0x00007fe1aed03ade в boost :: gregorian :: date :: date (boost :: gregorian :: greg_year,
boost :: gregorian :: greg_month, boost :: gregorian :: greg_day) ()

  • Я не пользовалась boost::gregorian::date эксплицитно
  • Возможно ли, что boost::gregorian::date использовать некоторые оптимизированные инструкции? как SSE или AVX? (кажется нелогичным)
  • Любая подсказка о проблеме?

Постскриптум ошибка возникает во время выполнения, прежде чем что-либо еще. Даже cout В первой строке основная функция не выполняется до того, как я получил ошибку. Итак, я подозреваю, что некоторые static constructor Внутренняя поддержка вызывает проблему, поскольку в моем коде нет статического конструктора.

Редактировать:

Все библиотеки и сама программа скомпилированы с -march=bonnell -mno-avx -O2

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]