我有兴趣在基于c的程序中包含C++语言。我有两个系统(主机和目标)目标系统是有限的,特别是在内存中。因此,在我的主机中,我必须静态链接目标端程序所需的一些库。但是,在我的makefile中,我一直在操作gcc补丁(在编译和链接步骤中使用各种gcc标志)。静态链接C++库失败
一切都很好,直到使用C++语言; 例如,通过在.cpp文件iostream头文件中,在目标系统上存在的错误表示:“不能解析符号‘wctob’”
我必须表明我的makefile波纹管:
in the compiling step:
$(CXX) -O0 -I<Headers dir> $(LIBSC) -Wno-write-strings -Wno-narrowing -Wno-return-type -Wno-abi -Wno-unused-variable -DNDEBUG -Wa, -c -fmessage-length=0 -I<Headers dir> -march=4kec -EL -o "[email protected]" "$<"
in the linking step:
$(CXX) -lpthread -Wl,-Map,output.map $(MyFlags) $(LIBS) $(STRIP) -muclibc -march=4kec -EL -o
"output.elf" $(OBJS) $(LIBS) $(MyFlags) -Wl,-rpath -Wl,<LIBDIR> -L<LIBDIR>
------一些定义
MyFlags = -lc -static-libstdc++ -static-libgcc
;(在连接步骤中使用这样的标志)
LIBDIR = is the address of needed libraries
LIBSC = -nostdinc++
;(在编译步骤中使用这样的标志)
Headers dir
=是由程序员需要包括C和C++头文件的地址。
LIBS and OBJS
也是需要的库和对象的列表。
此外,我将libdir添加到ld.so.conf和LD_LIBRARY_PATH中,但问题并没有解决。 (我的g ++版本是4.7.3。)
任何人都可以帮我吗?