неявный флаг компилятора

Я пытаюсь скомпилировать библиотеку C ++ для Tegra TK1. Библиотека ссылается на TBB, который я вытащил с помощью менеджера пакетов. Во время компиляции я получил следующую ошибку

/tmp/cc4iLbKz.s: Assembler messages:
/tmp/cc4iLbKz.s:9541: Error: thumb conditional instruction should be in IT block -- `strexeq r2,r3,[r4]'

Немного погуглить и этот вопрос заставил меня попробовать добавить -mimplicit-it=thumb в CMAKE_CXX_FLAGS, но компилятор не распознает его.

Я компилирую на Tegra с Kernal 3.10.40-grinch-21.3.4 и использую компилятор gcc 4.8.4 (вот что возвращается, когда я набираю c ++ -v)

Я не уверен, что означает первоначальное сообщение об ошибке, хотя я думаю, что оно связано с библиотекой, связанной с TBB, а не с источником, который я компилирую. Проблема с исправлением тоже загадочная. Может кто-нибудь пролить некоторый свет на это?

2

Решение

-mimplicit-it является вариант для ассемблера, не компилятору. Таким образом, в отсутствие определенных флагов ассемблера в вашем make-файле (которого у вас, вероятно, нет, учитывая, что вы не используете отдельный шаг ассемблера), вам нужно будет использовать -Wa вариант компилятору чтобы пройти через это, т.е. -Wa,-mimplicit-it=thumb,

Источником проблемы почти наверняка является некоторая встроенная сборка — возможно, из статической строки в заголовочном файле, если вы действительно связываете только предварительно созданные библиотеки — которая содержит условно исполняемые инструкции (я собираюсь догадаться, что-то вроде cmpxchg реализация). Поскольку ваш набор инструментов вполне может быть настроен для компиляции с набором команд Thumb — что требует предшествующего it (If-Then) инструкция для установки условных инструкций — по умолчанию, другой альтернативой может быть просто скомпилировать -marm (и / или удалить -mthumb если уместно) и обойти проблему, вообще не используя Thumb.

3

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

Добавление опции компилятора:

-Вашингтон

должен решить проблему.

-1

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