Собираю 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 $@
$(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)
$(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)
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)
Может кто знает почему. Какие-нибудь флаги забыл? Что-то совсем не понятно почему...
