Перейти к содержанию

    

FAQ по Eclipse+Make+GCC+CDT

Топик содержит ответы на часто задаваемые вопросы (FAQ) по использованию Eclipse, Make, GCC, CDT.

Свои идеи по добавлению ценной информации в FAQ присылайте в личку мне или модераторам ветки форума.

 

Настройка discovery в Eclipse с учётом дефайнов из makefile

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

GCC + виртуальные функции = undefined reference to...

Изменено пользователем IgorKossak

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Поддерживаю. Предлагаю вам дописать "пожелания по добавлению присылать в личку" и закрыть ветку. При необходимости будете снова открывать, дописывать и закрывать. Иначе цель ветки утонет в простыне обсуждений.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Хорошо. Топик закрываю. Жаль, что нет сворачивающихся спойлеров. Буду тогда отдельными сообщениями дописывать FAQ, а в шапке давать ссылки на них, чтобы шапка не перегружалась сильно.

 

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

##########################
# прописывается в 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)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Гость
Эта тема закрыта для публикации ответов.
Авторизация