Я пытаюсь скомпилировать библиотеку C++ для Tegra TK1. Библиотека связывается с TBB, которую я вытащил с помощью диспетчера пакетов. Во время компиляции я получил следующую ошибку-mimplicit-it флаг компилятора не распознан
/tmp/cc4iLbKz.s: Assembler messages:
/tmp/cc4iLbKz.s:9541: Error: thumb conditional instruction should be in IT block -- `strexeq r2,r3,[r4]'
Немного прибегая к помощи и this question привела меня попробовать добавить -mimplicit-it=thumb
в CMAKE_CXX_FLAGS, но компилятор не распознает его.
Я компиляции на Tegra с Kernal 3.10.40-Гринч-21.3.4, и с помощью GCC 4.8.4 компилятора (тот, что возвращается, когда я типа C++ -v)
Я не уверен, что означает начальное сообщение об ошибке, хотя я думаю, что это имеет какое-то отношение к связанной библиотеке TBB, а не к исходному компилятору. Проблема с исправлением также таинственна. Может кто-нибудь пролить некоторый свет на это?
Я пошел с '-Wa, -mimplicit-it = thumb', и это, похоже, решило ошибку ассемблера. Есть ли производительность или другие соображения, которые должны сообщать о моем выборе использования большого пальца или нет? – dmagree
В нем, вероятно, нет большого количества - все еще есть определенные вещи, которые вы можете сделать с инструкцией ARM, которая требует нескольких инструкций Thumb (даже с Thumb-2); с другой стороны, код Thumb по-прежнему имеет тенденцию быть меньшим, поэтому вы лучше используете I-cache (хотя вы можете потенциально быстрее запускать в угловые регистры ветви). Вам действительно нужно провести тщательный бенчмаркинг в каждом конкретном случае, чтобы решить, заботитесь ли вы. – Notlikethat