Среда разработки |
Предыдущая Содержание Следующая |
|
При работе под Windows потребуются утилиты GNU. Они могут идти в составе средств разработки вместе с компилятором gcc. Если их нет, установить их можно с сайта http://gnuwin32.sourceforge.net/. Потребуется как минимум make и rm. Добавить путь к утилитам в переменные окружения: Control Panel -> System -> Advanced -> Environment Variables -> Edit. Убедиться, что всё нормально с помощью команды:
make -v КомпиляторДля компиляции проще всего использовать тот же компилятор, которым собиралась файловая система. В этом случае необходимые библиотеки уже находятся в каталогах /lib/ и /usr/lib/. Если по каким-то причинам приходится использовать другой компилятор, проще все решить проблему отсутствия необходимых библиотек используя статическую линковку. Отсутствие необходимых библиотек проявляется в невозможности запуска программы:
# ./<progname> -sh: ./<progname>: not found
Для выполнения статической линковки компоновщику надо указать флаг -static. Узнать зависимости файла от библиотек можно просто открыв файл в текстовом редакторе. В начальной секции будет что-то похожее на:
. . /lib/ld-linux.so.3 . . . GNU . . . . . Компиляция из командной строкиMakefile для динамических библиотекШаблон:
PROGRAM_NAME = имя_библиотеки.so # **************************************** # COMPILATOR # **************************************** CC = $(CROSS_COMPILE)gcc #CC = $(CROSS_COMPILE)с++ # **************************************** # FLAGS # **************************************** CFLAGS = -fPIC -O2 -Wall CFLAGS += -march=armv5te -mtune=arm926ej-s CFLAGS += -msoft-float #CFLAGS += -fshort_wchar CFLAGS += -s CFLAGS += -ffunction-sections -fdata-sections # **************************************** # INCLUDES # **************************************** INCLUDES = -Iпуть_к_заголовочным_файлам # **************************************** # SOURCES # **************************************** SOURCE_FILES = исходник1.cpp \ исходник2.cpp # **************************************** # OBJECTS # **************************************** OBJECT_FILES = *.o # **************************************** # LINKER # **************************************** $(PROGRAM_NAME): $(OBJECT_FILES) $(CC) -shared -o $@ $^ # $(CC) -shared -static -o $@ $^ # **************************************** # COMPILE # **************************************** all: $(PROGRAM_NAME) $(OBJECT_FILES): $(SOURCE_FILES) $(CC) $(INCLUDES) $(CFLAGS) -c $^ # **************************************** # CLEAR # **************************************** clean: rm -f *.o # **************************************** # CLEAR ALL # **************************************** clean_all: rm -f *.o $(PROGRAM_NAME)
Makefile для статических библиотекШаблон:
LIB_NAME = имя_библиотеки.a # **************************************** # COMPILATOR # **************************************** CC = $(CROSS_COMPILE)gcc #CC = $(CROSS_COMPILE)c++ # **************************************** # FLAGS # **************************************** CFLAGS = -O2 -Wall CFLAGS += -march=armv5te -mtune=arm926ej-s CFLAGS += -msoft-float #CFLAGS += -fshort_wchar CFLAGS += -s CFLAGS += -ffunction-sections -fdata-sections # **************************************** # INCLUDES # **************************************** INCLUDES = -Iпуть_к_заголовочным_файлам # **************************************** # SOURCES # **************************************** SOURCE_FILES = исходник1.cpp \ исходник2.cpp # **************************************** # OBJECTS # **************************************** OBJECT_FILES = *.o # **************************************** # ARCHIVER # **************************************** $(LIB_NAME): $(OBJECT_FILES) $(CROSS_COMPILE)ar cr $@ $^ # **************************************** # COMPILE # **************************************** all: $(LIB_NAME) $(OBJECT_FILES): $(SOURCE_FILES) $(CC) $(INCLUDES) $(CFLAGS) -c $^ # **************************************** # CLEAR # **************************************** clean: rm -f *.o # **************************************** # CLEAR ALL # **************************************** clean_all: rm -f *.o $(LIB_NAME)
Makefile для исполняемого файлаШаблон:
PROGRAM_NAME = имя_программы # **************************************** # COMPILATOR # **************************************** CC = $(CROSS_COMPILE)gcc #CC = $(CROSS_COMPILE)c++ # **************************************** # FLAGS # **************************************** CFLAGS = -O2 -Wall CFLAGS += -march=armv5te -mtune=arm926ej-s CFLAGS += -msoft-float #CFLAGS += -fshort_wchar CFLAGS += -s CFLAGS += -ffunction-sections -fdata-sections
LFLAGS = -Wl,-Map=$(PROGRAM_NAME).map,--cref,--gc-sections #LFLAGS += -pthread #LFLAGS += -lcrypt #LFLAGS += -static # **************************************** # INCLUDES # **************************************** INCLUDES = -Iпуть_к_заголовочным_файлам # **************************************** # LIBRARIES # **************************************** LIB = <путь>/библиотека1.a <путь>/библиотека2.a # **************************************** # SOURCES # **************************************** SOURCE_FILES = исходник1.cpp \ исходник2.cpp # **************************************** # OBJECTS # **************************************** OBJECT_FILES = *.o # **************************************** # LINKER # **************************************** $(PROGRAM_NAME): $(OBJECT_FILES) $(CC) -o $@ $^ -L. $(LIB) $(LFLAGS) # **************************************** # COMPILE # **************************************** all: $(PROGRAM_NAME) $(OBJECT_FILES): $(SOURCE_FILES) $(CC) $(INCLUDES) $(CFLAGS) -c $^ # **************************************** # CLEAR # **************************************** clean: rm -f *.o # **************************************** # CLEAR # **************************************** clean_all: rm -f *.o $(PROGRAM_NAME).map $(PROGRAM_NAME)
СборкаДля запуска в Windows используется cross.cmd:
set CROSS_COMPILE=arm-none-linux-gnueabi-
make clean_all make make clean
Для запуска в Linux используется cross:
#!/bin/sh
#export PATH=/<path>/arm-2007q1/bin:${PATH} #export CROSS_COMPILE=arm-none-linux-gnueabi-
#export PATH=/<path>/buildroot-2009.08/build_arm/staging_dir/usr/bin:${PATH} #export CROSS_COMPILE=arm-linux-uclibcgnueabi-
export PATH=/<path>/buildroot-2010.05/output/staging/usr/bin:${PATH} export CROSS_COMPILE=arm-unknown-linux-uclibcgnueabi-
make clean_all make make clean Использование графической среда разработкиУстановкаВ качестве среды разработки используем Eclipse. Для работы eclipse понадобиться JRE или JDK для Java SE последней версии с http://java.sun.com/javase/downloads/index.jsp.
Устанавливаем: •Eclipse IDE for C/C++ Developers с http://www.eclipse.org/downloads/; •Eclipse C/C++ Development Tools с http://www.eclipse.org/cdt/; •Zylin Embedded CDT (поддержка GDB для CDT при разработке встраиваемых приложений) с http://opensource.zylin.com/embeddedcdt.html;
Установка Zylin Embedded CDT: •Запустить eclipse; •Help -> Install New Software, Add; •В поле Name ввести zylincdt, в поле Location ввести http://opensource.zylin.com/zylincdt, OK; •Установить флаг на Zylin Embedde CDT, Next, ещё раз Next; •Согласиться с лицензионным соглашением, нажать Finish; •Согласиться с загрузкой, по окончании перегрузить eclipse; НастройкаСнять флажок Project -> Build Automatically.
Настроить подсветку синтаксиса: •Войти в меню Windows -> Preferences -> C/C++ -> Editor -> Syntax Coloring; •В разделе Code -> Typedefs установить параметры текста: цвет - 194.7.7, bold; •В разделе Code -> Macro Definitions установить параметры текста: цвет - 0.0.192; •В разделе Code -> Functions установить параметры текста: цвет - 0.0.0, bold;
Если работа ведётся без внешней системы контроля версий, полезно использовать локальную историю. Настройка производится в меню Window -> Preferences -> General -> Workspace -> Local History. Сами файлы истории хранятся в каталоге <проект>\.metadata\.plugins\org.eclipse.core.resources\.history\.
Смотри также GNU-Based Software Development on AT91SAM Microcontrollers http://atmel.com/dyn/resources/prod_documents/doc6310.pdf YAGARTO and Eclipse http://yagarto.de/howto/yagarto2/index.html Development with Eclipse http://www.armbedded.eu/node/208 T2 System Development Environment Руководство по установке, настройке и использованию GNU Tools/Eclipse IDE в среде Windows для разработки программного обеспечения микроконтроллеров ARM http://www.terraelectronica.ru/files/modules/disc_v02/user_guide_eclipce_v2.pdf Настройка проектаПри создании проекта выбрать Other Toolchain. Таким образом, eclipse будет ожидать в директории проекта написанного вручную Makefile.
Настроить параметры проекта, доступные через меню Project -> Properties: •Установить кодировку текста в файлах в UTF-8. Resource -> Text file encoding -> UTF-8; •C/C++ Build -> Settings -> Binary Parsers, включить Elf Parsers и GNU Elf Parsers; •На вкладке C/C++ Build -> Settings -> Discovery Options установить Compiler Invocation Command, ввести название компилятора (arm-none-linux-gnueabi-gcc, например). Если компилятор указывается в Makefile, это делать необязательно; •На той же вкладке проверить, что установлен флаг Automate discovery of paths and symbols для автоматического добавления путей к подключаемым файлам при сборке проекта (обнаружение происходит, видимо, только при первой компиляции); •Установить Discovery profile как GCC per project scanner info profile; •Если в Makefile используется указание компилятора через переменную CROSS_COMPILE, определить её значение в C/C++ Build -> Environment, например, Name = CROSS_COMPILE, Value = arm-none-linux-gnueabi-; •Включить генерацию документации, C/C++ General, включить Enable project specific settings, указать Documentation tool как Doxygen; •Указать пути для внешних подключаемых файлов (которые не относятся к стандартным библиотекам и не будут обнаружены автоматически или если программа сама почему-то не может их найти) на вкладке C/C++ General -> Paths and Symbols -> Includes; •В Makefile должны присутствовать цели all и clean. Имена целей указаны в C/C++ Build, вкладка Behaviour, разделы Build и Clean. Если для сборки используется Makefile без какой-либо из эти целей, снять соответствующий флаг. СборкаИспользуются Makefile того же содержания, что и при сборке из командной строки.
|
Предыдущая Содержание Следующая |