Я новичок в MQX. Я использую MQX, имеет собственную реализацию стандартной библиотеки. Не поддерживает std::shared_ptr
ни std::unique_ptr
,
Кто-нибудь успешно использует другую версию (например, версию gnu libc ++) STL вместо встроенной библиотеки воина в MQX 4.11?
Редактировать 1
Добавлены подробности о том, что я пытаюсь сделать
В настоящее время в проекте используется GNU Arm Embedded Toolchain (gcc-arm-none-eabi-5_4-2016-q2), но вместо стандартной библиотеки gnu в проекте используется EWL (встроенная библиотека воина), которая, похоже, перестает обновляться для очень долгое время. Поэтому я пытаюсь использовать библиотеку gnu для замены EWL.
В make-файле это выглядит примерно так:
CPP_FLAGS += -mcpu=cortex-m4 -mthumb -mfloat-abi=hard -mfpu=fpv4-sp-d16 -fsingle-precision-constant -foptimize-sibling-calls\
-fno-strict-aliasing \
-g2 -gdwarf-2 -gstrict-dwarf -std=gnu++14 -Wall -Wextra -Woverloaded-virtual -Werror -Wcast-align -Wfloat-equal \
-Wformat-extra-args -Wformat -Wno-error=deprecated-declarations \
-specs=../ewl_c++.specs -fdiagnostics-show-option \
-Wno-missing-field-initializers \
-Wno-unused-function \
-Wno-long-long \
-isystem$(MQX_lib)/bsp/Generated_Code \
-isystem$(MQX_lib)/bsp \
-isystem$(MQX_lib)/psp \
-isystem$(MQX_lib) \
-isystem$(MQX_lib)/shell \
-isystem$(MQX_lib)/mfs \
-isystem$(MQX_lib)/rtcs \
-isystem$(MQX_lib)/usb \
-isystem$(CLARINOX_dir) \
-isystem$(CLARINOX_dir)/Source \
-isystem$(MQX_lib)/EWL/ARM_GCC_Support/ewl/EWL_C/include \
-isystem$(MQX_lib)/EWL/ARM_GCC_Support/ewl/EWL_C++/include \
-isystem$(MQX_lib)/EWL/ARM_GCC_Support/ewl/EWL_Runtime/include \
$(INCLUDES) \
$(BUILD_DEFINES) \
-ffunction-sections -fdata-sections -fconstexpr-depth=4096 -mlong-calls -fno-exceptions \
DHAVE_MQX\
-D__VFPV4__=1 -D_DEBUG=1 -c -fmessage-length=0 -D__CC_ARM
ARFLAGS = rcLINK_FLAGS = \
-mcpu=cortex-m4 -mthumb -mfloat-abi=hard -mfpu=fpv4-sp-d16 \
-g2 -gdwarf-2 -gstrict-dwarf -mlong-calls -fno-exceptions \
-Wl,-T../intflash_sramdata.ld \
-Xlinker --gc-sections \
-L$(MQX_lib)/EWL/ARM_GCC_Support/ewl/lib/armv7e-m/fpu
-L$(MQX_lib)/EWL/ARM_GCC_Support/ewl/lib/armv7e-m
-L$(MQX_lib)/bsp/Generated_Code \
-L$(MQX_lib)/bsp \
-L$(MQX_lib)/psp \
-L$(MQX_lib)/shell \
-L$(MQX_lib)/mfs \
-L$(MQX_lib)/rtcs \
-L$(MQX_lib)/usb \
Поскольку я пытаюсь использовать стандартную библиотеку GNU, я добавил
GCC_541=/opt/gcc-arm-none-eabi-5_4-2016q2/lib/gcc/arm-none-eabi/5.4.1
в начале make-файла и заменить EWL включает в CPP_FLAGS
блок
-isystem$(MQX_lib)/EWL/ARM_GCC_Support/ewl/EWL_C/include \
-isystem$(MQX_lib)/EWL/ARM_GCC_Support/ewl/EWL_C++/include \
-isystem$(MQX_lib)/EWL/ARM_GCC_Support/ewl/EWL_Runtime/include \
от
-isystem(GCC_541)/include \
-isystem(GCC_541)/include-fixed \
в LINK_FLAGS
блок, я заменил
-L$(MQX_lib)/EWL/ARM_GCC_Support/ewl/lib/armv7e-m/fpu
-L$(MQX_lib)/EWL/ARM_GCC_Support/ewl/lib/armv7e-m
от
-L$(GCC_541)/armv7e-m/fpu \
-L$(GCC_541)/armv7e-m \
После перестройки проекта я получил ошибку компиляции
Compiling [../../source/TestApps/SomeSrcFile.cpp to obj/SomeSrcFile.obj]
/bin/sh: 1: Syntax error: "(" unexpected
../common.mk:1804: recipe for target 'obj/SomeSrcFile.obj' failed
make[1]: *** [obj/SomeSrcFile.obj] Error 2
Я думаю, что могу что-то упустить, какие-либо предложения? Спасибо
Задача ещё не решена.
Других решений пока нет …