ошибка компиляции вне диапазона - PullRequest
2 голосов
/ 14 августа 2011

При компиляции на устройство я получаю следующие ошибки компиляции.(При компиляции в симулятор все в порядке)

/ var / folder / 3B / 3BAjD + ANHHmfh-eIWrtXDU +++ TI / -Tmp- / cc-hojnUD.s: 1784380: ветвь издиапазон /var/folders/3B/3BAjD+ANHHmfh-eIWrtXDU+++TI/-Tmp-/cc-hojnUD.s:1784372: вне диапазона / var / folder / 3B / 3BAjD + ANHHmfh-eIWrtXDU +++ TI/-Tmp-/cc-hojnUD.s:1784364: вне зоны действия /var/folders/3B/3BAjD+ANHHmfh-eIWrtXDU+++TI/-Tmp-/cc-hojnUD.s:1784356: вне зоны действия

В разных местах я читал что-то об отключении «большого пальца».На самом деле я не знаю, решит ли это проблему, поскольку нигде не могу найти эту опцию компиляции.

У меня есть довольно большие файлы инициализации (более 50 тыс. Строк), которые ничего не делают, кроме определения массива NSMutuableи так далее.

Я больше не могу заставить свое приложение компилироваться для iPhone из-за этой ошибки.

У вас есть идеи, что я могу с этим поделать?

пс.Я использую Xcode 4.2 с Apple LLVM 3.0 (используя ARM, поэтому я не могу изменить компилятор)

Большое спасибо!

Ответы [ 2 ]

0 голосов
/ 18 апреля 2014

Это известная ошибка компоновщика (rdar: // 16186742). Проблема заключается в компиляторе armv7, когда ему необходимо синтезировать острова ветвей, чтобы прыгнуть дальше, чем 16 МБ, и скачок оказывается равным точно 16 МБ. Обходной путь - переупорядочить исходные файлы на этапах сборки проекта и / или в библиотеках в разделе «Связать двоичные файлы с библиотеками». После нескольких переустройств эта проблема исчезнет.

0 голосов
/ 15 августа 2011

(перенесено из комментария). Является ли ваш файл инициализации одной огромной функцией? Если это так, это может помочь разбить функцию на более мелкие части и заставить ведущую функцию вызывать части по порядку.

...