The website "dmilvdv.narod.ru." is not registered with uCoz.
If you are absolutely sure your website must be here,
please contact our Support Team.
If you were searching for something on the Internet and ended up here, try again:

About uCoz web-service

Community

Legal information

Среда разработки

Среда разработки

Предыдущая  Содержание  Следующая  V*D*V

При работе под 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

http://www.t2-project.org/

Руководство по установке, настройке и использованию 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 того же содержания, что и при сборке из командной строки.

 

Предыдущая  Содержание  Следующая