Мы продолжаем нашу серию статей о том, как научиться работать с Embedded Linux, если у Вас уже есть опыт работы со встроенными системами, но не с Linux. Вы можете найти предыдущую статью здесь, и первую статью – тут.
В каждом проекте необходимо будет использовать....
набор компиляторов GNU (GNU Compiler Collection – GCC), бинарные утилиты GNU (Binutils), и утилиту «make», используется для построения программ и обработки зависимостей. У Linux есть несколько интегрированных сред разработки (IDE - integrated development environments), например Eclipse, но все они построены вокруг этих инструментов командной строки. В отличие от разработки на Windows, где использование Visual Stutdio обязательное правило, многие разработчики Linux не используют IDE
Для компиляции программы С с использованием GCC, напишите вашу программу используя Ваш любимый текстовый редактор (vi, emacs, gedit, kwrite и т.д.) и сохраните ее с расширением .с (в следующем примере мы используем стандартную первую программу С из «K&R» и сохраняем ее как «hello.c»). Затем введите следующую команду:
Это заставит компилятор С перевести Вашу программу и, в случае успеха и отсутствии ошибок, продолжится вызовом компановщика с соответствующими системными библиотеками для создания выполняемого файла с именем Hello. (Другие операционные системы идентифицируют выполняемый файл через расширение, например .ехе. Выполняемые файлы в Linux в основном не имеют расширений. Вместо файла система отмечает, что распознаваемый файл может быть выполнен). Имя выполняемого файла следующее «-о» option – опция, вариант, «-g» - вариант говорит о создании средств отладки (generate debugging information) и «-О1» (буква «О» с последующей цифрой 1) указывает она создание оптимизированного кода. В GCC есть большое количество различный вариантов, но это базовые. Для более легкой отладки можете указать «-О0» (буква «О» с последующей цифрой 0) или пропустить «О» - вариант компиляции без оптимизации. Если у Вас больше одного файла, которые Вы хотите скомпилировать и соединить вместе, просто напишите список имен исходных файлов один за другим.
Вы можете обнаружить, что у Вас отсутствуют такие компоненты, как GCC или заголовки для библиотеки С, которые не были установлены по умолчанию. В этом случае, Вы можете использовать Ваш «package manager» для добавления этих компонентов. В системе Fedora Вы можете использовать «yum» или возможно «packagekit GUI»; в Ubunto – «apt-get» или «synaptic GUI». Эти менеджеры пакетов будут загружены в ручную и установлены по Вашему запросу, также хорошо, как и любые другие, в зависимости от необходимости.
Вы можете запускать программные файлы из командной строки путем ввода имени программы, если они находятся непосредственно в Вашем каталоге, или путем присвоения пути имени файла. В нашем примере мы может сделать следующее:
В этом случае, т.к. наша текущая директория отсутствует в окружении переменной $, мы используем (.) точку для идентификации текущей директории и затем пишем имя файла, отделяя его знаком слэш (/) от директории.
Возможно, это удачное время для использования отладчика GDB для запуска программы. Делаете ли Вы ядро, драйверы или разрабатываете приложения, вполне вероятно, что Вам понадобится отлаживать Вашу программу с использованием отладчика GDB. В GDB есть интерфейс командной строки и это хорошо для изучения команд по выполнению базовых операций, например печать значения переменных, установка прерываний и пошаговое выполнение программы. Вот несколько возможных GUI для GDB. Я использую DDD, у которого теперь есть новое сопровождение, которого не было до недавнего времени. Другие GUI содержат Eclipse CDT IDE, Insight и даже расширения для текстового редактора Emacs.
Вы можете вызвать GDB следующим образом:
В приведенном выше примере сигнал на выходе выделен жирным шрифтом; наши команды в нормальном виде. В дополнение к начальной загрузке сообщений из GDB, там могут быть другие сообщения об отсутствии отладочной информации для библиотек системы или сообщение о программе выхода. В окружении Embedded Linux Вы будете использовать GCC, GDB и «make» также как и при обычной разработке в Linux. В большинстве случаев Вы будете использовать различные сборки GCC и GDB, которые предназначены для выполняемого процесса. Имена программ могут быть различные, например, «arm-none-eabi-gcc», генерирует код для ARM с использованием EABI (Embedded ABI). Другое отличие в том, что большинство из Вас вероятно будут работать в cross-development среде, где компиляция происходит в хост-системе и Вы скачиваете Ваши программы в целевую систему. Если у Вас уже есть опыт работы области embedded программирования, работа в среде cross-development вам будет знакома. Мы поговорим о том, как это работает в Embedded Linux в следующих частях. В следующей части мы поговорим о приложениях и библиотеках Linux и о большом выборе различных бесплатных программных пакетов.
В каждом проекте необходимо будет использовать....
набор компиляторов GNU (GNU Compiler Collection – GCC), бинарные утилиты GNU (Binutils), и утилиту «make», используется для построения программ и обработки зависимостей. У Linux есть несколько интегрированных сред разработки (IDE - integrated development environments), например Eclipse, но все они построены вокруг этих инструментов командной строки. В отличие от разработки на Windows, где использование Visual Stutdio обязательное правило, многие разработчики Linux не используют IDE
Для компиляции программы С с использованием GCC, напишите вашу программу используя Ваш любимый текстовый редактор (vi, emacs, gedit, kwrite и т.д.) и сохраните ее с расширением .с (в следующем примере мы используем стандартную первую программу С из «K&R» и сохраняем ее как «hello.c»). Затем введите следующую команду:
$ gcc -o hello -g -O1 hello.c
Вы можете запускать программные файлы из командной строки путем ввода имени программы, если они находятся непосредственно в Вашем каталоге, или путем присвоения пути имени файла. В нашем примере мы может сделать следующее:
$
./hello
Hello world!
Hello world!
$
gdb hello
[
start up messages from gdb ]
(gdb)
break main
Breakpoint
1 at 0x400530: file hello.c, line 5.
(gdb)
run
Starting
program: /tmp/hello
Breakpoint
1, main () at hello.c:5
5 printf ("Hello world!\n");
(gdb)
cont
Continuing.
Hello
world!
(gdb)
quit
Перевод - Карпухина Татьяна
Кадровое агентство "Работа КА"
оригинал [(-)]
➥ ✈
Комментариев нет:
Отправить комментарий