Оглавление:

Orange PI HowTo: компиляция Sunxi Tool для Windows под Windows: 14 шагов (с изображениями)
Orange PI HowTo: компиляция Sunxi Tool для Windows под Windows: 14 шагов (с изображениями)

Видео: Orange PI HowTo: компиляция Sunxi Tool для Windows под Windows: 14 шагов (с изображениями)

Видео: Orange PI HowTo: компиляция Sunxi Tool для Windows под Windows: 14 шагов (с изображениями)
Видео: Съемка таймлапс роликов с помощью Orange pi zero и вебки 2024, Июль
Anonim
Orange PI HowTo: компиляция Sunxi Tool для Windows под Windows
Orange PI HowTo: компиляция Sunxi Tool для Windows под Windows

ПРЕДПОСЫЛКИ:

Тебе понадобится

  1. (Настольный) компьютер под управлением Windows.
  2. Интернет-соединение.
  3. Оранжевая доска PI.

Последнее необязательно, но я уверен, что оно у Вас уже есть. В противном случае Вы не прочитаете эту инструкцию.

Когда вы покупаете одноплатный компьютер Orange PI, он остается всего лишь куском мертвого металла, пока не настроен должным образом. И его главный файл конфигурации: "script.bin" - это первый ключ, который оживит его. Этот файл находится в загрузочном разделе вашей загрузочной SD-карты. К счастью для нас, в большинстве дистрибутивов Linux с Официального сайта (https://www.orangepi.org/downloadresources/) этот раздел имеет файловую систему FAT32 и его легко увидеть на любом компьютере с Windows. Это действительно упрощает работу, поскольку до сих пор нет надежного способа записи в разделы Linux ext2 из-под Windows.

К сожалению, конфигурационный файл script.bin имеет двоичный формат, совершенно неприемлемый для редактирования человеком. Нужен какой-то программный инструмент, чтобы расшифровать его и зашифровать после внесения необходимых изменений. И такой набор инструментов существует. Это печально известный SUNXI-TOOLS. Ложка дегтя заключается в том, что он предназначен для работы под Linux, и нам нужно либо сохранить выделенную Linux-машину только для использования sunxi-tools, либо найти способ их компиляции для Windows.

Я мог бы просто скомпилировать его и поделиться исполняемым файлом, но никто не знает, хотят ли они сделать свежий выпуск, и вам понадобится новая компиляция как можно скорее. Поэтому я решил составить руководство, как собрать необходимый инструмент из исходников. Давайте начнем.

Шаг 1. Загрузите Sunxi-tools

Скачать Sunxi-tools
Скачать Sunxi-tools
Скачать Sunxi-tools
Скачать Sunxi-tools

Получите последнюю (или необходимую) версию исходного кода sunxi-tools. Перейдите по URL-адресу: https://github.com/linux-sunxi/sunxi-tools/releases и выберите загрузку в виде zip-архива.

Шаг 2: разархивируйте исходный код

Разархивируйте исходный код
Разархивируйте исходный код

После завершения загрузки разархивируйте исходный код в папку по вашему выбору. (далее я буду считать, что это папка c: / sunxitools \, поэтому замените этот путь на свой собственный).

Шаг 3. Загрузите код:: блоки

Скачать код:: блоки
Скачать код:: блоки

Если у вас установлена копия какого-либо работающего компилятора c ++ для windows. и если Вы знаете, как его использовать, Вы можете сразу перейти к шагу 3. Другие должны получить соответствующий компилятор C ++ и оболочку (IDE), чтобы использовать его с комфортом. Мой выбор - code:: block для Windows вместе с предустановленным набором инструментов MinGW. Вы можете получить его здесь:

Скачайте и установите его.

Шаг 4. Проверьте свою IDE

Проверьте свою IDE
Проверьте свою IDE

Чтобы проверить, все ли в порядке, запустите кодовые блоки, нажмите «создать новый проект», выберите «консольное приложение», выберите либо c, либо c ++, введите заголовок проекта оформления заказа, оставьте значения по умолчанию нетронутыми в следующем окне и нажмите «закончить».

Шаг 5: Завершите тест

Полный тест
Полный тест

Затем щелкните зеленый треугольник на верхней панели IDE или используйте пункт меню «Сборка-> Выполнить». Если все пошло правильно, вы должны увидеть сообщение из вашего автоматически сгенерированного приложения «Hello world» в черном окне «DOS».

Если нет, это означает, что IDE и компилятор не работают должным образом, и вам нужно будет изучить, как это правильно настроить. Возможно, вам придется загрузить другую версию инструментов программирования или проверить их разрешения в вашем брандмауэре / антивирусном ПО.

Шаг 6: Создайте новый проект

Создать новый проект
Создать новый проект
Создать новый проект
Создать новый проект
Создать новый проект
Создать новый проект
Создать новый проект
Создать новый проект

Теперь у вас должен быть работающий инструментарий программиста C / C ++ и распакованные исходные коды sunxi-tools в папке c: / sunxitools / на вашем компьютере. Пришло время собрать проект. Создайте новый проект в вашей IDE. Выберите простой проект C (не C ++) типа «консольное приложение».

Убедитесь, что вы создаете проект в папке c: / sunxitools \, а не в другом месте. (Кодовые блоки EG, как правило, создают подпапку с тем же именем, что и проект. Поэтому, если вы назвали свой проект, скажите "test" и попытайтесь поместить его в c: / sunxitools \, вы можете потерять проект. в c: / sunxitools / test \, если Вы недостаточно внимательны.) Sunxi-tools содержит несколько утилит, но для нашей цели нам понадобится только одна: так называемая утилита fexc.

Шаг 7: добавьте файлы в проект

Добавить файлы в проект
Добавить файлы в проект

Именно утилита fexc отвечает за преобразование script.bin в текстовый формат и за обратное преобразование в двоичный. Важно, чтобы исполняемый файл этой утилиты имел имя «fexc.exe», поэтому будет хорошо, если Вы назвали свой проект как «fexc». Однако вы можете использовать любое другое имя проекта, так как вы всегда можете переименовать исполняемый файл после компиляции, или вы можете выбрать «Проект-> Свойства» в верхнем раскрывающемся меню и в появившемся окне нажать вкладку «Цели сборки», и отредактируйте поле «Выходное имя файла», чтобы переопределить имя исполняемого файла.

В ваш автоматически сгенерированный проект вам нужно добавить только пять исходных файлов:

  • fexc.c
  • script.c
  • script_bin.c
  • script_fex.c
  • script_uboot.c

и семь файлов заголовков:

  • list.h (переместите его из c: / sunxitools / include / folder в c: / sunxitools / folder)
  • fexc.h
  • script.h
  • script_bin.h
  • script_fex.h
  • script_uboot.h
  • version.h

Не забудьте исключить автоматически сгенерированный main.c из проекта, потому что fexc.c уже имеет в себе функцию int main. (Помните, что любая программа должна иметь только одну главную функцию?).

Все необходимые файлы исходного кода уже находятся в подпапке, куда Вы распаковали исходные коды. Заголовочные файлы заслуживают пары слов, где их взять. «list.h» - обычно находится в подпапке «include» распакованного набора исходных кодов. "version.h" - просто создайте Сам. Поместите туда строку вроде:

#define ВЕРСИЯ "Win32"

Затем сохраните и закройте файл. (Вы можете украсить его символами #define и # ifdef, если хотите.)

Если вы сейчас попытаетесь скомпилировать проект, он будет жаловаться на множество ошибок и один отсутствующий файл. Ошибки в основном связаны с некоторой чрезмерной свободой стиля, применяемыми программистами sunxi-tools, а отсутствующий файл - это зависимость, не включенная в пакет исходного кода. Давайте разберемся с этим шаг за шагом.

Шаг 8: Приведите Gcc в соответствие с языковым стандартом ISO C 1999 г

Приведите Gcc в соответствие с языковым стандартом ISO C 1999 г
Приведите Gcc в соответствие с языковым стандартом ISO C 1999 г

Чтобы компилятор не жаловался, слишком свободный стиль программирования выставил стандарт компиляции "с99". В кодовых блоках перейдите в меню «Проект -> Параметры сборки» и в «Настройки компилятора -> Флаги компилятора» установите флажок «Привести gcc в соответствие с языковым стандартом ISO 1999 г.». Или вы можете просто добавить «-std = c99» в строку параметров вашего компилятора. Теперь, если вы попытаетесь скомпилировать проект, эти тонны ошибок должны исчезнуть, и вы один на один с отсутствующей зависимостью.

Шаг 9: Найдите недостающую зависимость

Найдите недостающую зависимость
Найдите недостающую зависимость

Отсутствует зависимость - это файл "mman.h" - заголовок какого-то менеджера памяти Linux. В Windows C такого файла изначально нет, но, к счастью, для него есть порт для Windows. Перейдите на https://github.com/witwall/mman-win32 для Windows. Загрузите снимок репозитория git.

Шаг 10: Распакуйте Mman

Распаковать Мман
Распаковать Мман

Распакуйте файлы mman.c и mman.h, поместите их в папку c: / sunxitools \.

Шаг 11: и добавьте их в проект

И добавить их в проект
И добавить их в проект

Шаг 12: правильный путь

Правильный путь
Правильный путь

И в файле "fex.c" строка raplece:

#включают

к

#include "mman.h"

На этом этапе ваш компилятор не должен ни на что жаловаться, и на выходе вы получите долгое ожидание fexc.exe. Не радовайся слишком рано. Утилита все еще не полностью функциональна. Вы можете убедиться в этом, расшифровав некоторый допустимый файл script.bin в текстовую форму - файл script.fex с последующим шифрованием файла script.fex обратно в script.bin. Вы можете заметить, что размер результирующего script.bin немного отличается от размера исходного script.bin. И если Вы попытаетесь расшифровать полученный еще раз, ничего не получится. Ни Orange PI не будет работать с этим script.bin. Чтобы получить функциональную утилиту, мы должны сбросить кодовую бомбу, которую кто-то поместил в исходный код sunxi-tools. Это будет нашим следующим шагом.

Шаг 13: Экзорцизм

Экзорцизм
Экзорцизм

Чтобы разрядить кодовую бомбу, откройте файл кода fexc.c и найдите там текстовую строку следующего содержания:

иначе if ((out = open (filename, O_WRONLY | O_CREAT | O_TRUNC, 0666)) <0) {

Просто замените его следующей строкой:

иначе if ((out = open (filename, O_WRONLY | O_CREAT | O_TRUNC | O_BINARY, 512)) <0) {

Если бы не злые цифры «666» в первой строке, я бы подумал, что кодировщик просто забыл использовать флаг O_BINARY. Но Число Зверя прозрачно проясняет его намерения. Подумайте, насколько это гениально: из-за тонкой разницы в том, как файлы обрабатываются в Windows и Linux, бомба не действует, когда утилита скомпилирована и используется под Linux. Но все портит, когда утилита используется под Windows.

После того, как бомба была обезврежена, вы наконец можете скомпилировать и безопасно использовать утилиту fexc на вашем настольном компьютере с Windows.

Шаг 14: ПРИМЕЧАНИЯ

ПРИМЕЧАНИЯ
ПРИМЕЧАНИЯ

1) Для комфортного использования утилитой fexc вы должны получить два командных файла:

bin2fex.bat - и - fex2bin.bat.

Вы можете получить их из какой-нибудь сборки faily fexc.exe для Windows, или вы можете ввести их сами:

  • bin2fex.bat должен содержать "fexc -I bin -O fex script.bin script.fex"
  • fex2bin.bat должен содержать "fexc -O bin -I fex script.fex script.bin"

2) Если сложно найти менеджер mman для Windows, можно вообще отказаться от его использования. Однако это требует гораздо большего редактирования файла fexc.c и требует, по крайней мере, некоторых знаний о c. Для Вашего удобства я делюсь отредактированным исходным кодом fexc из sunxi-tools v1.4, свободным от зависимости от mman.h, вместе с файлом проекта кодовых блоков и образцом script.bin из какого-то оранжевого пи. Вы можете скачать fexc_nomman.zip

3) Возможно, что в последующих версиях sunxi-tools они добавят еще несколько зависимостей. Вы можете найти их в Интернете и добавить в свой проект компиляции.

5) Наконец, вот предварительно скомпилированная версия fexc.exe для Win32:

fexc_nomman.zip

Если Вы достаточно ленивы, не стесняйтесь использовать ver. Однако имейте в виду, что он не будет обновлен, если / когда будут доступны новые версии SunxiTools / Windows. Полагаю, лучше научиться их компилировать, чем полагаться на какую-то фиксированную двоичную сборку.

4) Orange PI, Code:: Blocks, Windows, Linux, Sunxi-Tools, Allwinner и т. Д. Являются соответствующими товарными знаками соответствующих владельцев.

5) Если ваш компилятор жалуется на то, что не находит функции mman, например:

неопределенная ссылка на '_imp_mmap'

Имейте в виду, что любители определения mman в сообществе разработчиков забыли, что код можно скомпилировать не только как библиотеку dll. Это также может быть статическая библиотека или автономный код, как здесь. Чтобы решить эту проблему, отредактируйте файл "mman.h" следующим образом:

а) найти струны:

# если определено (MMAN_LIBRARY)

#define MMANSHARED_EXPORT _declspec (dllexport) #else #define MMANSHARED_EXPORT _declspec (dllimport) #endif

б) добавить строку

#define MMANSHARED_EXPORT

чуть ниже строк, найденных на предыдущем шаге

Рекомендуемые: