Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: FAQ по Eclipse+Make+GCC+CDT
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Cредства разработки для МК > GNU/OpenSource средства разработки
Aaron
Топик содержит ответы на часто задаваемые вопросы (FAQ) по использованию Eclipse, Make, GCC, CDT.
Свои идеи по добавлению ценной информации в FAQ присылайте в личку мне или модераторам ветки форума.

Настройка discovery в Eclipse с учётом дефайнов из makefile
Статические библиотеки для STM32Fx: пример создания и использования. Существенно экономит время при частом запуске build.
GCC + виртуальные функции = undefined reference to...
Сергей Борщ
Поддерживаю. Предлагаю вам дописать "пожелания по добавлению присылать в личку" и закрыть ветку. При необходимости будете снова открывать, дописывать и закрывать. Иначе цель ветки утонет в простыне обсуждений.
Aaron
Хорошо. Топик закрываю. Жаль, что нет сворачивающихся спойлеров. Буду тогда отдельными сообщениями дописывать FAQ, а в шапке давать ссылки на них, чтобы шапка не перегружалась сильно.

Статические библиотеки для STM32Fx. Пример создания и использования. Существенно экономит время при частом запуске build.
CODE
##########################
# прописывается в makefile
##########################

AR = arm-none-eabi-ar

# STM32F10x_StdPeriph_Driver
DEFS += -DUSE_STDPERIPH_DRIVER #uncomment to use this library

STDPERIPHLIB = StdPeriphLib
STDPERIPH_LIB = $(LIBDIR)/lib$(STDPERIPHLIB).a # need as path/name to create static library

STDPERIPH_DRIVER_DIR := ./STM32F10x_StdPeriph_Driver
STDPERIPH_DRIVER := $(STDPERIPH_DRIVER_DIR)
STDPERIPH_DRIVER += $(STDPERIPH_DRIVER_DIR)/inc
STDPERIPH_DRIVER += $(STDPERIPH_DRIVER_DIR)/src

# static library compiling paths & objects
STDPERIPH_LIB_DIR := $(STDPERIPH_DRIVER)
STDPERIPH_LIB_DIR += ./CMSIS
LIB_INCS := $(patsubst %, -I "%", $(STDPERIPH_LIB_DIR))

STDPERIPH_OBJS += $(wildcard $(addsuffix /*.c, $(STDPERIPH_DRIVER)))
STDPERIPH_SRC_FILES := $(STDPERIPH_OBJS)
STDPERIPH_OBJS := $(notdir $(STDPERIPH_OBJS))
STDPERIPH_OBJS := $(STDPERIPH_OBJS:.c=.o)
STDPERIPH_OBJS := $(patsubst %, $(OBJDIR)/%, $(STDPERIPH_OBJS))

CPU_FLAGS := -mcpu=$(MCU)
CPU_FLAGS += -mthumb
CPU_FLAGS += $(FPU)

# общие ключи для бинутилит AS, CC, CXX, AR
FLAGS = $(CPU_FLAGS)
FLAGS += $(DEFS)
FLAGS += -Wa,-adhlns=$(addprefix $(LSTDIR)/, $(notdir $(addsuffix .lst, $(basename $<))))

# общие ключи для сборки как проекта, так и статических библиотек
COMMON_CFLAGS = $(OPTIMIZE)
ifneq (,$(filter-out discovery defines,$(MAKECMDGOALS)))
COMMON_CFLAGS += -MD
endif
COMMON_CFLAGS += -std=gnu99
COMMON_CFLAGS += -g
COMMON_CFLAGS += -pipe
COMMON_CFLAGS += -fstack-usage
COMMON_CFLAGS += -ffunction-sections -fdata-sections
COMMON_CFLAGS += -Wall -Wextra
COMMON_CFLAGS += -Wimplicit -Wcast-align -Wpointer-arith -Wredundant-decls
COMMON_CFLAGS += -Wshadow -Wcast-qual -Wcast-align -Wnested-externs
#COMMON_CFLAGS += -pedantic # CMSIS core uses GCC extensions

# флаги для сборки библиотеки STM32Fx_StdPeriphLib
LIB_CFLAGS = $(FLAGS)
LIB_CFLAGS += $(LIB_INCS)
LIB_CFLAGS += $(COMMON_CFLAGS)

LDFLAGS += -L$(LIBDIR) # where LD need to search libraries
LDFLAGS += -l$(STDPERIPHLIB)

$(STDPERIPH_LIB):
@echo --- need to create $@...
$(MAKE) buildSTDPeriphLib

buildSTDPeriphLib: $(STDPERIPH_OBJS)
@echo --- creating static library $(STDPERIPH_LIB)...
$(AR) rcs $(STDPERIPH_LIB) $(STDPERIPH_OBJS)
@echo ...ok

all: $(STDPERIPH_LIB)
$(MAKE) start
$(MAKE) $(ELF)
$(MAKE) $(BIN)
$(MAKE) $(LSS)
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2024 Invision Power Services, Inc.