我是 MQX 的新手。我使用的 MQX 有自己的标准库实现。它不支持std::shared_ptr
也不std::unique_ptr
。
是否有人成功使用 STL 的另一个版本(例如 gnu 版本 libc++)而不是 MQX 4.11 上的嵌入式战士库?
编辑 1 添加了有关我正在尝试做的事情的更多详细信息
目前,该项目正在使用 GNU Arm Embedded Toolchain (gcc-arm-none-eabi-5_4-2016-q2),但该项目没有使用 gnu 标准库,而是使用 EWL(嵌入式战士库),它似乎停止更新很长时间。所以我正在尝试使用 gnu 库来替换 EWL。
在 makefile 中,它具有以下内容:
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 = rc
LINK_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
在 makefile 的开头添加并替换了CPP_FLAGS
块中的 EWL 包含
-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
我想我可能会错过一些东西,有什么建议吗?谢谢