Короче, победил я это дело. Теперь почти функциональный C++ получился. Шаблоны заработали, вызов конструкторов, деструкторов, наследование, а вот с остальным всё очень нестабильно. Оказывается ключ оптимизации очень сильно влияет на появление SIGSEGV. С одним ключом он есть, с другим нет при запуске. В общем, видимо сборка старенькая, еле дышит наладом, нужно очень аккуратно использовать функционал C++.
Итак, добавил ключики:
Код
CPPFLAGS += -fno-exceptions
LDFLAGS += -lstdc++
В Makefile
Код
CRTBEGIN_OBJ:=$(shell $(CC) $(CPPFLAGS) -print-file-name=crtbegin.o)
CRTEND_OBJ:=$(shell $(CC) $(CPPFLAGS) -print-file-name=crtend.o)
$(CC) $(CPPFLAGS) $(CRTBEGIN_OBJ) $(OBJECTS) $(CRTEND_OBJ) $(LDFLAGS) -o $(TARGET)
И обязательно играемся с
Код
# Optimization level, can be [0, 1, 2, 3, s].
# 0 = turn off optimization. s = optimize for size.
OPT = 2
Возможно нужно было ещё crt1.o, crti.o и crtn ручками вставить в нужном порядке, но я забыл ключ компоновщика, чтобы их автоматом не включать.
Да... какое поле возможностей сразу открылось. Жаль STL нету (пока). У uClibc вроде есть там какой-то урезанный вариант или это отдельно идёт, посмотрим потом.