Возникла проблема. Нашел на другом форуме точную формулировку своей проблемы. Решение той проблемы не описано. Прошу помочь:
| Цитата | Hi All, I've built the arm-elf tool chain with the following gcc 3.0.2 release binutil 2.11.92.0.7 newlib-1.9.0
When I build the following C++ program I get undefined reference to _gxx_personality_sj0
file t.hpp
| Код | class foo { public: foo(void); ~foo(void); void test(void); }
|
file t.cpp
| Код | #include "t.hpp" foo::foo(void) {;} foo::~foo(void) {;} void foo::test(void) {;}
|
file tt.cpp
| Код |
#include "t.hpp" int main(void) { foo k; while(1) k.test(); }
|
If all the files listed are place in the same source file I don't get the undefined reference to _gxx_personality_sj0. Any suggestions?
|
мой маке файл:
| Код | TRGT = arm-elf- CPP = $(TRGT)g++ CC = $(TRGT)gcc LD = $(TRGT)ld AS = $(TRGT)as OC = $(TRGT)objcopy SZ = $(TRGT)size
MCU = arm7tdmi PROJECT = mit
LDSCRIPT = AT91SAM7S64-ROM.ld source_dirs = source out_dir = out
#флаги g++ CPPFLAGS = -c -fexpensive-optimizations -O3 #флаги gcc CCFLAGS = -c -MD -O0 #флаги as ASFLAGS = -Wa -amhls=$(out_dir)/$(notdir $(<:.s=.lst)) -ahls -mapcs-32 #флаги ld LDFLAGS = -Wl,-T$(LDSCRIPT),-Map=$(out_dir)/$(PROJECT).map,--cref,-lstdc++,-lsupc++ LDFLAGS2= -mcpu=$(MCU) -nostartfiles -T$(LDSCRIPT) -Wl,--no-warn-mismatch
#флаги objcopy OCFLAGS = --output-target=binary
search_wildcards := $(addsuffix /*.s,$(source_dirs)) $(addsuffix /*.cpp,$(source_dirs)) $(addsuffix /*.c,$(source_dirs)) VPATH := $(source_dirs) OBJECTS = $(addprefix $(out_dir)/, $(notdir $(patsubst %.c,%.o, $(patsubst %.cpp,%.o, $(patsubst %.s,%.o, $(wildcard $(search_wildcards)))))))
all: clean binutilsversions $(PROJECT) $(out_dir)/$(PROJECT).elf size
.PHONY: clean
clean: rm -f $(addprefix $(out_dir)/, *.d *.o *.lst *.map *.out *.bin)
binutilsversions: @echo ================================================== ================= @$(CPP) --version @echo ================================================== ================= @$(CC) --version @echo ================================================== ================= @$(AS) --version @echo ================================================== ================= @$(LD) --version @echo ================================================== ================= @echo
$(out_dir)/$(PROJECT).elf: $(OBJECTS) $(CC) $(OBJECTS) $(LDFLAGS2) -o $@
$(PROJECT): $(out_dir)/$(PROJECT).out $(OC) $(OCFLAGS) $< $(out_dir)/$(PROJECT).bin
#линковка $(out_dir)/$(PROJECT).out: $(OBJECTS) $(CC) $(LDFLAGS) $^ -o $@ #$(LD) $(LDFLAGS) $^ -o $@
#компиляция $(addprefix $(out_dir)/,%.o): %.c $(CC) $(CCFLAGS) $< -o $@
$(addprefix $(out_dir)/,%.o): %.cpp $(CPP) $(CPPFLAGS) $< -o $@
#асемблирование $(addprefix $(out_dir)/,%.o): %.s $(AS) $(ASFLAGS) $< -o $@
size: $(out_dir)/$(PROJECT).out $(SZ) $<
include $(wildcard *.d)
|
|