0

我是 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

我想我可能会错过一些东西,有什么建议吗?谢谢

4

0 回答 0