使用c+对OpenWRT进行交叉编译+;11旗 我是OpenWRT的新手,需要交叉编译C++程序。问题是,我仍然会遇到以下错误: error: 'to_string' is not a member of 'std' "duplicate raw value " + std::to_string(it->first)); ^

使用c+对OpenWRT进行交叉编译+;11旗 我是OpenWRT的新手,需要交叉编译C++程序。问题是,我仍然会遇到以下错误: error: 'to_string' is not a member of 'std' "duplicate raw value " + std::to_string(it->first)); ^,c++,c++11,openwrt,C++,C++11,Openwrt,现在我知道了,这是个问题,在编译过程中并没有使用c++11标志。我试图将TARGET_cxflags添加到Makefile中,但没有帮助 以下是生成文件: include $(TOPDIR)/rules.mk PKG_NAME:=gateway PKG_VERSION:=1.0 PKG_RELEASE:=2 INIT_SCRIPT_NAME:=$(PKG_NAME) PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz PKG_SOURCE_SUBDIR

现在我知道了,这是个问题,在编译过程中并没有使用c++11标志。我试图将TARGET_cxflags添加到Makefile中,但没有帮助

以下是生成文件:

include $(TOPDIR)/rules.mk

PKG_NAME:=gateway
PKG_VERSION:=1.0
PKG_RELEASE:=2
INIT_SCRIPT_NAME:=$(PKG_NAME)

PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
PKG_SOURCE_PROTO:=git
PKG_BUILD_DEPENDS:=+libmosquittopp +poco +zmq +cppzmq +openzwave +cppunit +bluez-libs
PKG_SOURCE_URL:=....
PKG_SOURCE_VERSION:=...

CMAKE_INSTALL:=1

include $(INCLUDE_DIR)/package.mk
include $(INCLUDE_DIR)/cmake.mk

CMAKE_OPTIONS += \
    -DCMAKE_INSTALL_PREFIX=/ \
    -DCMAKE_BUILD_TYPE:STRING=Release

TARGET_CXXFLAGS += -DPOCO_NO_FPENVIRONMENT 
TARGET_CXXFLAGS += -g -std=c++11 -Wall -pedantic

....

谢谢你的建议,Jakub。

取决于GCC版本和STD库版本。我可以确认上游的最后一个版本运行良好。这是我的测试生成文件,它可能会帮助你并给你一些线索

CXX=/media/build/openwrt/staging_dir/toolchain-arm_cortex-a7+neon-vfpv4_gcc-5.5.0_musl_eabi/bin/arm-openwrt-linux-g++

RM=rm -f
LDLIBS=
CPPFLAGS=-Wall -std=c++11
LDFLAGS=-L/media/build/openwrt/staging_dir/target-arm_cortex-a7+neon-vfpv4_musl_eabi/usr/lib
INC=-I. -I/media/build/openwrt/staging_dir/target-arm_cortex-a7+neon-vfpv4_musl_eabi/usr/include


SOURCES=main.cpp
OBJECTS=$(SOURCES:.cpp=.o)
EXECUTABLE = hello

all: $(OBJECTS) $(EXECUTABLE)

$(EXECUTABLE): $(OBJECTS)
    $(CXX) -o $@ $^ $(LDFLAGS) $(LDLIBS)

.cpp.o:
    $(CXX) $(INC) $(CPPFLAGS) -c $<

clean:
    $(RM) $(OBJECTS)

distclean: clean
    $(RM) $(EXECUTABLE)

.PHONY: all clean distclean
CXX=/media/build/openwrt/staging\u dir/toolchain-arm\u cortex-a7+neon-vfpv4\u gcc-5.5.0\u musl\u eabi/bin/arm-openwrt-linux-g++
RM=RM-f
低密度脂蛋白=
CPPFLAGS=-Wall-std=c++11
LDFLAGS=-L/media/build/openwrt/staging_dir/target-arm_cortex-a7+neon-vfpv4_musl_eabi/usr/lib
INC=-I.-I/media/build/openwrt/staging_dir/target-arm_cortex-a7+neon-vfpv4_musl_eabi/usr/include
SOURCES=main.cpp
对象=$(源:.cpp=.o)
可执行文件=你好
所有:$(对象)$(可执行文件)
$(可执行文件):$(对象)
$(CXX)-o$@$^$(LDFLAGS)$(LDLIBS)
.cpp.o:
$(CXX)$(INC)$(CPPFLAGS)-c$<
清洁:
$(RM)$(对象)
清洁:清洁
$(RM)$(可执行文件)
.假的:都是干净的

您使用的是什么标准库(包括版本)?如果它足够大,它可能没有
to_string
。在这种情况下,更改Makefile不会有帮助。你是说g++的版本吗?我使用的是g++版本5.4.0。