Я пытаюсь получить кросс-компиляцию для Малины Пи, работающей на моей машине Ubuntu.
Во время моих первоначальных попыток я использовал компилятор arm-linux-gnueabi, который доступен в репозитории Ubuntu. Я получил эту работу. Я смог построить все свои зависимости и использовать кросс-компилятор в моем проекте cmake.
Тем не менее, я считаю, что я должен использовать версию hf, поэтому я переключился на arm-linux-gnueabihf. Тогда я понял, что это не работает с малиной Pi, так как это armv6.
После некоторого Googling я нашел встроенную toolchain из GitHub.
Я загрузил toolchain, но я действительно не понимаю, как его "установить". Я извлек файлы в свой домашний каталог. Структура каталогов выглядит так:
/gcc-linearo-arm-linux-gnueabihf-raspbian
/arm-linux-gnueabihf
/bin
(contains g++, gcc, etc)
/lib
(contains libstdc++ library)
/bin
(contains arm-linux-gnueabihf-g++, arm-linux-gnueabihf-...)
/lib
(gcc lib stuff)
Если я сменю каталог в папку INNER bin, я могу без проблем скомпилировать тестовую программу с терминала.
~/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/
arm-linux-gnueabihf/bin$ g++ test.cpp -o test
Затем я попытался скомпилировать тестовую программу в папке OUTER bin, которая содержит префиксные версии инструментов.
~/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin$
arm-linux-gnueabihf-g++ test.cpp -o test
Однако, когда я пытаюсь использовать компилятор сейчас (из-за внутренней директории bin), он не может найти общую библиотеку libstdc++, которая поставляется с toolchain:
arm-linux-gnueabihf-gcc: error while loading shared libraries:
libstdc++.so.6: cannot open shared object file: No such file or directory.
Кроме того, я хочу иметь возможность использовать компилятор, не переходя в каталог bin. Поэтому я попытался добавить каталог OUTER bin (так как я хочу префиксные версии) и оба каталога lib в PATH:
export PATH=$PATH:~/tools/.../bin
export PATH=$PATH:~/tools/.../lib
export PATH=$PATH:~/tools/.../.../lib
Однако это приводит к той же ошибке. Как мне "установить" toolchain, чтобы я мог использовать инструментальную цепочку повсюду, как я могу, когда я использую кросс-компиляторы из репозитория Ubuntu?