Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: KDS 3.0.0 (Eclipse)
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Cредства разработки для МК > GNU/OpenSource средства разработки
asm_lock
Здравствуйте уважаемые коллеги!
использую KDS 3.0.0 он же Eclipse Version: Luna SR2 (4.4.2)
Нужна помощь. Не могу понять в чем проблема.

Problems: make: *** [bin_MB_server\FRDM_K64F120M.elf] Error 1

В консоле пишет вот что:

arm-none-eabi-gcc: error: unrecognized command line option '-nanolibc'
make: *** [bin_MB_server\FRDM_K64F120M.elf] Error 1



mdmitry
Цитата(asm_lock @ Feb 29 2016, 18:28) *
Здравствуйте уважаемые коллеги!
...
В консоле пишет вот что:

arm-none-eabi-gcc: error: unrecognized command line option '-nanolibc'
make: *** [bin_MB_server\FRDM_K64F120M.elf] Error 1

Так и смотрите что передается в качестве командной строки с опциями. Соберите проект сначала просто из командной строки. Для отладки ключ -n у make очень полезен. Библиотеки подключаются к gcc определенным образом при сборке. Почитайте руководство.
asm_lock
Цитата(mdmitry @ Feb 29 2016, 17:58) *
Так и смотрите что передается в качестве командной строки с опциями. Соберите проект сначала просто из командной строки. Для отладки ключ -n у make очень полезен. Библиотеки подключаются к gcc определенным образом при сборке. Почитайте руководство.



Спасибо. Попробую.

Цитата(mdmitry @ Feb 29 2016, 17:58) *
Так и смотрите что передается в качестве командной строки с опциями. Соберите проект сначала просто из командной строки. Для отладки ключ -n у make очень полезен. Библиотеки подключаются к gcc определенным образом при сборке. Почитайте руководство.


Ругается на makefile....

USER@USER-PC /cygdrive/d/KDS/MB_server/build
$ make -n
MAKE Version 5.2 Copyright © 1987, 2000 Borland
Error makefile 37: Command syntax error
Error makefile 46: Command syntax error
Error makefile 83: Command syntax error
*** 3 errors during make ***


Мэйке вроде бы годный...
mdmitry
Экзотика!!!
У Вас часом Borland не стоит? В комплекте Borland шёл make, НО его синтаксис НЕ СОВМЕСТИМ с синтаксисом makefile gnu make!
Версию лучше брать не ранее GNU Make 3.81.

Цитата
make --version
GNU Make 3.81
Copyright © 2006 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.


Вам надо запускать именно gnu make, как - решать Вам. Убрать Borland, поменять переменные окружения, ручной запуск и другое.

С KDS 3.0.0 не имел дел. Посмотрите что идет в комплекте со средой, куда ставиться, есть ли собственно make в поставке. Посмотрите, с каким окружением запускается среда.
asm_lock
Ага...стоит родной, от него видать make и берется...
AlexandrY
Откуда в KDS взялась опция -nanolibc?
Там ее не может быть.
Настройки должны быть такие -
Нажмите для просмотра прикрепленного файла
asm_lock
согласен полностью...но только в моем (очень тяжелом) случае используется внешний makefile
AlexandrY
Цитата(asm_lock @ Feb 29 2016, 17:58) *
согласен полностью...но только в моем (очень тяжелом) случае используется внешний makefile


Ну тогда и компилятор выбирайте "внешний". Зачем использовать KDS?
asm_lock
Цитата(AlexandrY @ Feb 29 2016, 19:09) *
Ну тогда и компилятор выбирайте "внешний". Зачем использовать KDS?

оооххх......
просто проект не мой.... разработчика который это писал, след простыл...
вот собираю по крупицам...
в makefile'e есть ссылка на common.mak в котром упоминается cygwin...

# Cygwin path
CYGWINDIR = c:\cygwin64\bin

# Cygwin utilities
CYGWIN_DIR = $(call remove_slashes,$(CYGWINDIR))
RM = $(CYGWIN_DIR)/rm.exe
MKDIR = $(CYGWIN_DIR)/mkdir.exe
CAT = $(CYGWIN_DIR)/cat.exe
ECHO = $(CYGWIN_DIR)/echo.exe
COPY = $(CYGWIN_DIR)/cp.exe
TOUCH = $(CYGWIN_DIR)/touch.exe
CHMOD = $(CYGWIN_DIR)/chmod.exe
[/color]
AlexandrY
Цитата(asm_lock @ Feb 29 2016, 18:20) *
оооххх......
просто проект не мой.... разработчика который это писал, след простыл...


В KDS свой компилятор, ему не нужен cygwin, соответственно и опции другие и библиотеки.
Боюсь KDS тут ничем не поможет, он в диалогах заточен под свои опции.
mdmitry
Цитата(asm_lock @ Feb 29 2016, 20:20) *
в makefile'e есть ссылка на common.mak в котром упоминается cygwin...

Если Вы с linux умеете работать, то проект можно перетащить в него. В этом случае все команды в системе есть и головная боль отсутствует. Компилятор можно установить локально в каталог юзера, указав его расположение в makefile.
Если можете, то покажите весь makefile. Будет легче понять, что и как хотел автор собирать.
asm_lock
Цитата(AlexandrY @ Feb 29 2016, 21:35) *
В KDS свой компилятор, ему не нужен cygwin, соответственно и опции другие и библиотеки.
Боюсь KDS тут ничем не поможет, он в диалогах заточен под свои опции.


Компилятор то свой...только вот для чего использовался Cygwin ???
Aaron
cygwin - тяжеловес, как правило для сборки проектов из-под винды достаточно юзать minGW.
Связано с тем, что исторически подавляющее большинство makefile писалось под NIX системы, всё многообразие вызываемых базовых функций оттуда же (которые вы как раз процитировали). Если у вас человек, от которого досталось наследство, увлекался сборкой всего и вся из исходников (из-под винды!!!), ему для этого нужен был cigwin.

Предполагаю, что в KDS уже при установке должен быть встроен набор базовых команд, посмотрите внимательно PATH в свойствах проекта - borland оттуда выпилите, проверьте, какие пути ещё прописаны. Поищите в папке с KDS где лежит mkdir.exe - эиу папку и надо в PATH добавлять. В таком случае вам ни cigwin, ни mingw не нужен будет.
asm_lock
Цитата(Aaron @ Mar 1 2016, 09:44) *
cygwin - тяжеловес, как правило для сборки проектов из-под винды достаточно юзать minGW.
Связано с тем, что исторически подавляющее большинство makefile писалось под NIX системы, всё многообразие вызываемых базовых функций оттуда же (которые вы как раз процитировали). Если у вас человек, от которого досталось наследство, увлекался сборкой всего и вся из исходников (из-под винды!!!), ему для этого нужен был cigwin.

Предполагаю, что в KDS уже при установке должен быть встроен набор базовых команд, посмотрите внимательно PATH в свойствах проекта - borland оттуда выпилите, проверьте, какие пути ещё прописаны. Поищите в папке с KDS где лежит mkdir.exe - эиу папку и надо в PATH добавлять. В таком случае вам ни cigwin, ни mingw не нужен будет.


Ну от машины бывшего программера остались лишь высохшие конденсаторы...поэтому о том как и что собиралось узнаю с трудом...

За совет спасибо, пропишу в path пути...попробую собрать.
В этом случае я так понимаю нужно будет использовать мэйкфайл которые генериться автоматически ?
AlexandrY
Цитата(asm_lock @ Mar 1 2016, 07:47) *
Компилятор то свой...только вот для чего использовался Cygwin ???


Судя по тому, что диалог настроек у вас отличается от моего, то у вас либо не KDS 3.0 либо отдано управление какому-то левому Add-On-у
Cygwin конечно здесь не нужен.
Советовал бы снести и переставить KDS и сформировать проект заново из дерева исходников.

Как правильно ставить KDS можете почитать здесь - https://geektimes.ru/post/263378/
asm_lock
Цитата(AlexandrY @ Mar 1 2016, 10:19) *
Судя по тому, что диалог настроек у вас отличается от моего, то у вас либо не KDS 3.0 либо отдано управление какому-то левому Add-On-у
Cygwin конечно здесь не нужен.
Советовал бы снести и переставить KDS и сформировать проект заново из дерева исходников.

Как правильно ставить KDS можете почитать здесь - https://geektimes.ru/post/263378/


устанавивал KDS 3.1.0 . Проект импортировал со старого винча...
AlexandrY
Цитата(asm_lock @ Mar 1 2016, 09:41) *
устанавивал KDS 3.1.0 . Проект импортировал со старого винча...


Так много файлов что нельзя заново проект сгенерировать?
asm_lock
Цитата(AlexandrY @ Mar 1 2016, 10:51) *
Так много файлов что нельзя заново проект сгенерировать?

дахрена.....+ модбасовская либа...

Я то свой тестовый проект сгенерил. Т.е. KDS работает. генерит и все грузит...
asm_lock
Цитата(AlexandrY @ Mar 1 2016, 10:51) *
Так много файлов что нельзя заново проект сгенерировать?



Ну вот нарыл options' ы, они в отдельном файле common.mak....
Получается какая вермишель !!! запускается собственный мэйкфайл, из которого запускается *.mak....в котором прописаны настройки...
Код
ldopt       = -mcpu=$(proc) -g \
              -O$(optimize_level) \
              -mthumb -mfloat-abi=hard -mfpu=fpv4-sp-d16 \
              -fmessage-length=0 -fsigned-char -ffunction-sections -fdata-sections -Wall \
              -T $(call remove_slashes,$(LINKER_CMD_FILE)) \
              -Xlinker \
              --gc-sections \
              -Wl,-Map,"$(BIN_OUTPUT_PATH)/$(boardname).map" \
              -nanolibc


Судя по всему проект делался в KDS 1.1.1 и там есть флаг линкера "-nanolib". В KDS 3.1.0 такого флага нету....
Aaron
вы не те куски цитируете, так в проблеме не разобраться. Пока что я криминала никакого не вижу. Ну подумаешь, 2-3 вложенных файла сборки вызываются...
библиотеки линкуются флагом -l, попробуйте -lnanolib, -lnanolibc - и вообще, поищите в папке с KDS файлик libnanolib*.* - что найдётся?

если хотите, чтобы проблема быстрее решилась - выкладывайте файлы сборки к проекту целиком. И ещё раз - сейчас какая конкретно проблема? только nanolib? А если вместо неё слинковать стандартную libc, пускай даже она более тяжеловесная?
asm_lock
Цитата(Aaron @ Mar 1 2016, 16:48) *
вы не те куски цитируете, так в проблеме не разобраться. Пока что я криминала никакого не вижу. Ну подумаешь, 2-3 вложенных файла сборки вызываются...
библиотеки линкуются флагом -l, попробуйте -lnanolib, -lnanolibc - и вообще, поищите в папке с KDS файлик libnanolib*.* - что найдётся?

если хотите, чтобы проблема быстрее решилась - выкладывайте файлы сборки к проекту целиком. И ещё раз - сейчас какая конкретно проблема? только nanolib? А если вместо неё слинковать стандартную libc, пускай даже она более тяжеловесная?


При сборке ругается : arm-none-eabi-gcc: error: unrecognized command line option '-nanolibc'

В KDS ничего из libnanolib*.* не нашел.

CODE
COMMON.MAK

# Cygwin path
CYGWINDIR = c:\cygwin64\bin

# Cygwin utilities
CYGWIN_DIR = $(call remove_slashes,$(CYGWINDIR))
RM = $(CYGWIN_DIR)/rm.exe
MKDIR = $(CYGWIN_DIR)/mkdir.exe
CAT = $(CYGWIN_DIR)/cat.exe
ECHO = $(CYGWIN_DIR)/echo.exe
COPY = $(CYGWIN_DIR)/cp.exe
TOUCH = $(CYGWIN_DIR)/touch.exe
CHMOD = $(CYGWIN_DIR)/chmod.exe


# Path to compiler directory
ARMGCCDIR = C:\Freescale\KDS_3.0.0\toolchain


remove_slashes = $(subst \,/,$(1))
empty =
space = $(empty) $(empty)

remove_spaces = $(subst $(space),\$(space),$(1))

obj_output_path = $(call remove_slashes,$(OBJ_OUTPUT_PATH))
bin_output_path = $(call remove_slashes,$(BIN_OUTPUT_PATH))

# set final target
.PHONY: all
all: MK_OUT_PATH $(BIN_OUTPUT_PATH)\$(boardname).elf PRINT_SIZE
build: $(BIN_OUTPUT_PATH)\$(boardname).elf PRINT_SIZE

include $(SSC_ROOT)\ssc\mak\common_defs.mak
include $(SSC_ROOT)\ssc\mak\common_rules.mak


OBJ_FILE_SUFFIX = o
LIB_FILE_SUFFIX = lib

.SUFFIXES: # Delete the default suffixes
.SUFFIXES: .c .h .$(OBJ_FILE_SUFFIX) .$(LIB_FILE_SUFFIX)

#\/---------- Microchip compiler ------------------\/
# compiler root directory
ARM_GCC_DIR = $(call remove_spaces,$(call remove_slashes,$(ARMGCCDIR)))

# Compiler paths
cbin = $(ARM_GCC_DIR)/bin

# Executables
CC = $(cbin)/arm-none-eabi-gcc
LI = $(cbin)/arm-none-eabi-gcc
SIZE = $(cbin)/arm-none-eabi-size

# Compilers' options
ccopt = -D$(compiler_name) -D$(projname) -D$(environment) \
$(debug) -D$(platform) -D$(cpu) -D$(boardname) \
-c -mcpu=$(proc) -g \
-O$(optimize_level) \
-mthumb -mfloat-abi=hard -mfpu=fpv4-sp-d16 \
-fmessage-length=0 -fsigned-char -ffunction-sections -fdata-sections -Wall \
-MMD \
-std=c99


ifeq ($(release),)
debug = -DDEBUG
endif

ifeq ($(release),yes)
debug =
endif

ldopt = -mcpu=$(proc) -g \
-O$(optimize_level) \
-mthumb -mfloat-abi=hard -mfpu=fpv4-sp-d16 \
-fmessage-length=0 -fsigned-char -ffunction-sections -fdata-sections -Wall \
-T $(call remove_slashes,$(LINKER_CMD_FILE)) \
-Xlinker \
--gc-sections \
-Wl,-Map,"$(BIN_OUTPUT_PATH)/$(boardname).map" \
-nanolibc



#/\---------- ARM GCC compiler ------------------/\

cpopt += $(addprefix -I,$(call remove_slashes,$(CC_INCLUDE_PATH)))

# C rule
define generate_c_rule
$(addprefix $(OBJ_OUTPUT_PATH)\,$(addsuffix .$(OBJ_FILE_SUFFIX),$(basename $(notdir $(1))))): $(1)
@$(ECHO) Processing $$<
$(CC) $$(subst \,\\,$$<) -o $$(subst \,\\,$$@) $(ccopt) $(cpopt)
endef

# Asm rule
define generate_asm_rule
$(addprefix $(OBJ_OUTPUT_PATH)\,$(addsuffix .$(OBJ_FILE_SUFFIX),$(basename $(notdir $(1))))): $(1)
@$(ECHO) Processing $(1)
$(AS) $(asopt) -o $$(subst \,\\,$$@) $$(subst \,\\,$$<)
endef

XX_FILES_TO_BUILD = $(CC_FILES_TO_BUILD) $(S_FILES_TO_BUILD) $(ASM_FILES_TO_BUILD)
XX_OBJ_FILES = $(addprefix $(OBJ_OUTPUT_PATH)\,$(addsuffix .$(OBJ_FILE_SUFFIX),$(basename $(notdir $(XX_FILES_TO_BUILD)))))
FILES_TO_LINK = $(XX_OBJ_FILES) $(LIBRARIES_LINK_ONLY) $(OBJECTS_LINK_ONLY)

LIST_OBJ_FILES = $(call remove_slashes,$(XX_OBJ_FILES))
LIST_LIB_FILES += $(call remove_slashes,$(SDK_ROOT))/lib/ksdk_platform_lib/kds/$(CHIP)/debug/ksdk_platform_lib.a

# Dependencies
-include $(XX_OBJ_FILES:.o=.d)

# Generation of C and assempler rules
$(foreach file,$(CC_FILES_TO_BUILD),$(eval $(call generate_c_rule,$(file))))
$(foreach file,$(ASM_FILES_TO_BUILD),$(eval $(call generate_asm_rule,$(file))))

# Rule for linking
$(BIN_OUTPUT_PATH)\$(boardname).elf: $(FILES_TO_LINK)
@$(ECHO) Linking $@
@$(MKDIR) -p $(bin_output_path)
$(LI) $(ldopt) -o $(subst \,\\,$@) -Xlinker --start-group \
$(LIST_OBJ_FILES) $(LIST_LIB_FILES) \
-lm -Xlinker --end-group
@$(ECHO) Done $@

PRINT_SIZE: $(BIN_OUTPUT_PATH)\$(boardname).elf
@$(ECHO) Print size information
$(SIZE) -B -d -t $(BIN_OUTPUT_PATH)/$(boardname).elf

clean:
@$(ECHO) Clean...
@$(RM) -fR $(OBJ_OUTPUT_PATH)

clean_keep_elf:
@$(ECHO) Clean with keep elf ...
@$(RM) -fR $(OBJ_OUTPUT_PATH)



PS: Файлы что то подгружать не хочет


При ключе -libc выдается вот такая вот бяка !

Код
c:/freescale/kds_3.0.0/toolchain/bin/../lib/gcc/arm-none-eabi/4.8.4/../../../../arm-none-eabi/bin/ld.exe: cannot find -libc
collect2.exe: error: ld returned 1 exit status
make: *** [bin_MB_server\FRDM_K64F120M.elf] Error 1




Вот сам common и makefile.
asm_lock
Всем большое спасибо за полезные советы и просто за участие!

Проект собрался успешно..
Aaron
asm_lock, Дак а в чём проблема-то была в итоге? sm.gif
asm_lock
Цитата(Aaron @ Mar 15 2016, 16:59) *
asm_lock, Дак а в чём проблема-то была в итоге? sm.gif



Прошу прощения, за то что сразу не написал.

Проблема была в человеке который проект разрабатывал.
Он решил не использовать стандартный инструментарий среды для настроек проекта а делал все майкфалами....причем их было несколько (если быть точным то 6).
в мейкфайлах прописывалось все !!! пути к библиотекам, настройки компилятора, типа проца, платы и т.д. и т.п.
компилилось все под cygwin.

ну разобравшись во всем этом...я прописал там где нужно свои пути... и все срослось и даже задебажилось !!!!
ЗЫ: самое ужасно что много кода написано скриптами...=((
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.