Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Проблемы с линковкой из библиотеки *.a
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
xelax
есть две части проекта... Аппаратно зависимая hwd и аппаратно независимая hwi часть. hwi вызывает функции из hwd части.
Собираю hwd.a(в arm моде) и hwi.a(в thumb моде)...
Затем пишу простенькую main где использую вызываю функции из hwi.

В итоге при линковке проекта ругается на вызов hwd-функций в hwi-функциях.
"undefined reference".

Когда собираю проект из объектников напрямую без библиотек, то всё ок. Проект собирается, работает.

так собирается.
Код
test.elf : $(ARM_OBJ) $(THUMB_OBJ)     
    $(CC) $(CFLAGS) $(ARM_OBJ) $(THUMB_OBJ) -nostartfiles $(LINKER_FLAGS)

$(THUMB_OBJ)  : %.o : %.c $(LDSCRIPT)
    $(CC) -c $(THUMB_FLAGS) $(CFLAGS) $< -o $@    

$(ARM_OBJ) : %.o : %.c $(LDSCRIPT)
    $(CC) -c $(CFLAGS) $< -o $@


А так не линкуется....
makefile1
Код
################
$(objects_hwd):    
    $(CC) $(CFLAGS) -c $^ -o $@
$(BUILDDIR)/hwd1.o: $(BUILDDIR)/hwd1.c
$(BUILDDIR)/hwd2.o: $(BUILDDIR)/hwd2.c
.
.
.
################
$(objects_hwi):
    $(CC) $(CFLAGS) $(THUMB_FLAGS) -c $^ -o $@
$(BUILDDIR)/hwi1.o: $(BUILDDIR)/hwi1.c
$(BUILDDIR)/hwi2.o: $(BUILDDIR)/hwi2.c
.
.
.
################
LIB_HWD : $(objects_hwd)
    $(AR) cr $(LIBDIR)/hwd.a $(objects_hwd)
################
LIB_HWI : $(objects_hwi)
    $(AR) cr $(LIBDIR)/hwi.a $(objects_hwi)


makefile2
Код
LIBS = -lhwd -lhwi

all: $(objects_main) $(PROJECT)

$(objects_main):     
    $(CC) $(CFLAGS) $(INCL) -c $^ -o $@
main.o:  main.c

$(PROJECT): $(objects_main)    
    $(CC) -nostartfiles $(CFLAGS) $(objects_main) $(LIB_PATHS) $(LIBS) -nostartfiles $(LINKER_FLAGS)


Может кто знает почему. Какие-нибудь флаги забыл? Что-то совсем не понятно почему... wacko.gif
Alex03
Мож ошибаюсь, но есть какието давние смутные воспоминания про последовательность либ даденых линкеру. Попробуйте поменять:
Код
LIBS = -lhwi -lhwd
xelax
Цитата(Alex03 @ Nov 21 2007, 07:53) *
Мож ошибаюсь, но есть какието давние смутные воспоминания про последовательность либ даденых линкеру. Попробуйте поменять:
Код
LIBS = -lhwi -lhwd


Спасибо... Действительно от перестановки мест слагаемых сумма меняется в лучшую сторону a14.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.