Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Otchet2.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
1.35 Mб
Скачать

4.3 Разработка приложения для платформ х86 и arm

Установить компилятор в системе не представляется возможным, а значит необходимо собрать на платформе х86 приложение и под платформу х86, и под платформу ARM. Имеется make-файл, в котором указаны зависимости файлов друг от друга и правила для их удовлетворения, и исходный код приложения.

Содержимое make-файла:

LIBS=gtk+-2.0 #переменная для библиотеки элементов интерфейса

CFLAGS=`pkg-config --cflags $(LIBS)` #переменная для флагов, которые передаются компилятору; pkg-config – утилита, предоставляющая интерфейс для получения информации об установленных программных библиотеках, включающую в себя параметры для C или C++ компилятора, параметры для компоновщика, а также версию пакета

CLIBS=`pkg-config --libs $(LIBS)` #переменная для C библиотек

COPTS=-std=gnu99 #стандартный макрос, содержащий флаги для С-компилятора

PROJECT=gplot #переменная для названия проекта

#переменные для пути:1-Angstrom, 2-инклуды для сборки для arm-платформы, 3- arm библиотек

ANGPATH=/usr/local/angstrom/arm

ARMINCLUDES=$(ANGPATH)/arm-angstrom-linux-gnueabi/usr/include

ARMLIBS=$(ANGPATH)/arm-angstrom-linux-gnueabi/usr/lib

all: x86

both: x86 arm

x86:

gcc $(COPTS) $(PROJECT).c -o $(PROJECT).x86 $(CFLAGS) $(CLIBS)

arm:

$(ANGPATH)/bin/arm-angstrom-linux-gnueabi-gcc $(COPTS) $(PROJECT).c -o $(PROJECT).arm $(CFLAGS) $(CLIBS)

clean:

rm -rf "$(PROJECT)" "$(PROJECT).x86" "$(PROJECT).arm" *~

make — утилита, автоматизирующая процесс преобразования файлов из одной формы в другую. Чаще всего это компиляция исходного кода в объектные файлы и последующая компоновка в исполняемые файлы или библиотеки.

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

make [ -f make-файл ] [ цель ] ...

Файл ищется в текущем каталоге. Если ключ -f не указан, используется имя по умолчанию для make-файла — Makefile (однако, в разных реализациях make кроме этого могут проверяться и другие файлы, например GNUmakefile).

make открывает make-файл, считывает правила и выполняет команды, необходимые для создания указанной цели.

Стандартные цели для сборки дистрибутивов GNU:

  • all — выполнить сборку пакета;

  • install — установить пакет из дистрибутива (производит копирование исполняемых файлов, библиотек и документации в системные каталоги);

  • uninstall — удалить пакет (производит удаление исполняемых файлов и библиотек из системных каталогов);

  • clean — очистить дистрибутив (удалить из дистрибутива объектные и исполняемые файлы, созданные в процессе компиляции);

  • distclean — очистить все созданные при компиляции файлы и все вспомогательные файлы, созданные утилитой ./configure в процессе настройки параметров компиляции дистрибутива.

По умолчанию make использует самую первую цель в make-файле.

В процессе сборки приложений BSD часто применяют:

  • depend — выполнить компиляцию/выстраивание зависимостей.

Программа make выполняет команды согласно правилам, указанным в специальном файле. Этот файл называется make-файл (makefile, мейкфайл). Как правило, make-файл описывает, каким образом нужно компилировать и компоновать программу.

make-файл состоит из правил и переменных. Правила имеют следующий синтаксис:

цель1 цель2 ...: реквизит1 реквизит2 ...

команда1

команда2

...

Правило представляет собой набор команд, выполнение которых приведёт к сборке файлов-целей из файлов-реквизита.

Правило сообщает make, что файлы, получаемые в результате работы команд (цели) являются зависимыми от соответствующих файлов-реквизита. make никак не проверяет и не использует содержимое файлов-реквизита, однако, указание списка файлов-реквизита требуется только для того, чтобы make убедилась в наличии этих файлов перед началом выполнения команд и для отслеживания зависимостей между файлами.

Обычно цель представляет собой имя файла, который генерируется в результате работы указанных команд. Целью также может служить название некоторого действия, которое будет выполнено в результате выполнения команд (например, цель clean в make-файлах для компиляции программ обычно удаляет все файлы, созданные в процессе компиляции).

Строки, в которых записаны команды, должны начинаться с символа табуляции.

Отсюда можно сделать вывод, что для сборки исходного приложения под платформу х86 используется компилятор gcc (стандартный компилятор для ОС linux). Исходный код компилируется в объектный файл с последующей компоновкой в исполняемый файл для запуска на одноплатном компьютере.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]