Проблемы с кросс-компиляцией - PullRequest
5 голосов
/ 23 февраля 2010

Я пытаюсь настроить Boost 1.42 в нашей системе. Мне нужен Boost для компиляции для обычной архитектуры x86 с gcc, и мне нужна кросс-компиляция для процессора ARM Texas Instruments.

Набор инструментов для процессора ARM основан на gcc. Инструменты типа gcc, ar, ranlib имеют префикс arm_v5t_le-. Документация о кросс-компиляции несколько ограничена. Вот что я сделал: Я добавил следующее в файл user-config.jam: using gcc : arm : arm_v5t_le-g++ ; Bjam вызывается из нашего файла Makefile следующим образом: bjam toolset=gcc-arm --toolset-root=/opt/mv_pro_4.0/montavista/pro/devkit/arm/v5t_le/bin <some other options> для компиляции для процессора ARM и следующим образом: bjam toolset=gcc <some other options> для процессора x86. Опция --toolset-root упоминается здесь .

Я столкнулся со следующей проблемой: Когда я создаю наше приложение для процессора ARM, я получаю следующую ошибку компоновщика: libboost_system-mt.a: не удалось прочитать символы: в архиве нет индекса; запустить ranlib, чтобы добавить один. После того, как я запустил arm_v5t_le-ranlib в архиве, он связывается без проблем. Я предполагаю, что bjam использует ar вместо arm-v5t_le-ar. Как мне сказать bjam, какой архиватор он должен использовать?

В списке рассылки было сказано, что он также указывает <archiver> в user-config.jam, но, к сожалению, он, похоже, не работает. Я получаю ту же ошибку компоновщика.

Спасибо.

1 Ответ

3 голосов
/ 23 февраля 2010

Попробуйте сборку Boost на основе CMake, которая может выполнять межплатформенные сборки лучше, чем BJam. По крайней мере, мне это удалось (но я никогда не пробовал ARM).

...