Учимся кросс-компилировать Raspberry Pi и Ubuntu

Каталог статей


Предисловие

При ежедневном написании программ, если целевая плата разработки не имеет компилируемой платформы, ее необходимо кросс-компилировать на другой платформе в код, который сможет запускать целевая плата разработки. на плате разработки Raspberry Pi.

1. Что такое кросс-компиляция?

        Кросс-компиляция заключается в создании кода на одной платформе, который может работать на другой платформе. При изучении c51 мы часто используем keil для написания программ. Keil работает в Windows и, наконец, генерирует файл xx.hex. Последний исполняемый файл запускается на c51 вместо Windows. Этот процесс требует кросс-компиляции. Просто keil интегрирует кросс -внутренняя компиляция, которую мы не видим.

        Короче говоря, кросс-компиляция заключается в создании исполняемого кода для целевой платформы на одной платформе, например c51 и stm32.Процесс кросс-компиляции находится в рамках keil.

2. Зачем нужна кросс-компиляция?

        Причина кросс-компиляции проста: платформа не позволяет или не может установить нужный нам компилятор, например C51.

        Потому что ресурсы на целевой платформе скудны и не могут запустить нужный нам компилятор.

        Разве Raspberry Pi не нуждается в кросс-компиляции из-за своих мощных функций? Ответ — да. Иногда Raspberry Pi — это потому, что целевая платформа еще не определена. У него даже нет операционной системы, и нет никакой возможности говорить о запуске какого-либо компилятора. Операционная система также представляет собой код и ее необходимо скомпилировать!

3. Что нужно для кросс-компиляции?

        Кросс-компилятор, цепочка инструментов кросс-компиляции.

 Давайте представим установку цепочки инструментов кросс-компиляции:

        1. https://github.com/raspberrypi/  

            Перейдите на сайт, чтобы загрузить необходимые инструменты.

    

 2. После успешной загрузки вы можете скопировать его в рабочий каталог Ubuntu.

3. Используйте команду для распаковки файла tools-master.zip.

4. Войдите в следующий каталог, чтобы найти множество команд, поскольку для Raspberry Pi требуется Arm-linux-gnueabihf-gcc.

 cd /home/aqh/lessonPI/tools-master/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin

5. Настройте переменные среды

pwd получает текущий путь

/home/aqh/lessonPI/tools-master/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin

echo $PATH получает значение текущей переменной среды

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games: вам не нужно обращать внимание на следующие, вам нужно только нужно обратить внимание на предыдущие.

экспортировать ПУТЬ=

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/home/CLC/lessonPI/tools-master/arm-bcm2708/ gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin

Этот метод конфигурации действует временно.Если мы случайно закроем терминал или откроем другой терминал, команда кросс-компиляции станет недействительной.

Вам необходимо раз и навсегда перейти на постоянный метод настройки.

        Измените скрытый файл .bashrc vi /home/aqh/.bashrc в рабочем каталоге. 

         Добавьте в последнюю строку файла:

экспортировать ПУТЬ=

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/home/CLC/lessonPI/tools-master/arm-bcm2708/ gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin

Примечание. Вышеупомянутые переменные среды связаны знаком равенства.

Наконец, загрузите файл конфигурации, и конфигурация немедленно вступит в силу.

        источник /home/CLC/.bashrc

Введите «arm-linux-gnueabihf-gcc -v» в окне терминала, чтобы проверить успешность установки. В случае успеха вы сможете просмотреть номер версии.

3. Как создать исполняемый файл Raspberry Pi и загрузить его на Raspberry Pi?

1. Скомпилируйте и сгенерируйте исполняемую программу Raspberry Pi.

        рука-linux-gnueabihf-gcc xxx.c -o xxx

        Используйте приведенную выше команду для создания xxx из файла xxx.c, и Raspberry Pi сможет запустить эту программу xxx.

2. Загрузите исполняемую программу на Raspberry Pi для запуска.

        scp xxx [email protected]:/home/pi

       scp — Команда xxx — Имя файла

        [email protected] — имя пользователя Raspberry Pi@сетевой адрес Raspberry Pi.

        /home/pi — абсолютный путь к Raspberry Pi.

4. Как скомпилировать программу с библиотекой WiringPi?

        1. Установите библиотеку WiringPi для Ubuntu.

        2. Сначала кросс-компилируем библиотеку WiringPi.Скомпилированная библиотека подходит для Raspberry Pi.Библиотека, связанная при кросс-компиляции программы, подходит для Raspberry Pi.

        3. Укажите путь к библиотеке через -I (заглавная i) -L -l (строчная L), чтобы связать библиотеку.

Метод Raspberry Pi:   

1. Сначала я скопировал libwiringPi.so.2.50 из Raspberry Pi в Ubuntu      
 2. Создайте мягкую ссылку на этот файл библиотеки:

        Мягкая ссылка: 1. Файлы программных ссылок имеют ярлыки, аналогичные Windows.
                     2. В символической ссылке файл на самом деле является текстовым файлом, содержащим информацию о местоположении другого файла.
                     3. Сгенерируйте образ файла в выбранном вами месте, который не будет занимать дисковое пространство.

        Создать мягкую ссылку:

                ln -s libwiringPi.so.2.50 libwiringPi.so С помощью ls -l вы обнаружите, что файл .so будет иметь стрелку, указывающую на файл библиотеки.

        Создать жесткую ссылку:

                ln libwiringPi.so.2.50 libwiringPi.so Он создаст файл того же размера, что и исходный файл, в выбранном вами месте.


Справочник по мягким и жестким ссылкам: команда создания соединения Linux ln -s создает мягкое соединение - Чжан На нана - Blog Park


Guess you like

Origin blog.csdn.net/qq_44848795/article/details/122342889