#gcc #arm #cross-compiling #gnu-toolchain
#gcc #arm #перекрестная компиляция #gnu-набор инструментов
Вопрос:
В настоящее время я переношу большую базу кода на несколько платформ arm, используя различные цепочки инструментов, предоставляемые производителями устройств. Если я создаю и связываю базу кода в Linux, для соединения требуется примерно 30 секунд. Для ряда кросс-компиляторов, которые у меня есть, это время примерно одинаково, но для некоторых из них это время превышает 10 минут. Я перепробовал несколько методов, чтобы снизить это, но ничего не помогает (например, создание супер-библиотеки). Единственное, что заметно отличается, — это связывание с -0s, которое сокращает время почти на 40%, но все равно оставляет мне 6-минутную ссылку, а также менее идеален во время отладки, поскольку большая часть кода оптимизирована.
Что может сделать один кросс-компилятор намного медленнее, чем другие? В целом характеристики этих компиляторов почти идентичны (ARMv7, поддержка NEON, gcc 4.x).
Любые предложения, которые могут улучшить время соединения? Я ссылаюсь на 3 статические библиотеки, остальные — динамические ссылки на системные библиотеки.
Комментарии:
1. Какие цепочки инструментов вы используете? На это было бы легче ответить, если бы вы были более конкретными.
2. Вот два примера, пожалуйста, дайте мне знать, если это то, что вам нужно: Быстрый пример: ./gcc —version gcc (‘cs2009q3-hard-67-sb16’) 4.4.1 Медленный пример: ./gcc —version gcc (исходный код G Lite 2009q3-67) 4.4.1
3. Эмм, не совсем. Это строки конфигурации , оба были переданы в версию v67 3-го квартала 2009 года для набора инструментов ARM Code Sourcery . Я бы предположил, что «жесткий» в первом относится к аппаратной плавающей запятой в NEON, но ее отсутствие в последнем не означает, что ее нет.
4. На самом деле эта ссылка на набор инструментов arm оказала ОГРОМНУЮ помощь. Я загрузил 2010 q1, который является той же версией 4.4.1, и компоновщик работает очень быстро (7 секунд по сравнению с 6 минутами). Спасибо!!
5. Это хорошо, но обратите внимание, что обе ваши цепочки инструментов относятся к одной и той же версии. Медленная работа не в магистрали CodeSourcery / GCC, а в настройках одной из ваших цепочек инструментов.