器件型号:MSP432P401R
我采用了 driverlib 空 gcc 项目、并添加了一些简单的 c++代码、并在主函数中创建并销毁了一个对象。 我还说
#ifdef _cplusplus extern "C" { #endif //code #ifdef _cplusplus } #endif
启动文件和系统 c 文件。
代码会编译、但不会链接。 它向我发出此警告(重复):
警告:/usr/lib/gcc/arm-none-eabi/5.4.1/../../../arm-none-eabi/lib/armv7e-m/fpu/libstdc ++_nano。a (atexit_arm.o)使用2字节 wchar_t、但输出使用4字节 wchar_t;跨对象使用 wchar_t 值可能会失败
此错误:
/usr/lib/gcc/arm-none-eabi/5.4.1/../../../arm-none-eabi/lib/armv7e-m/fpu/libc_nano.a (lib_a-abort.o):在函数`abort'中:
/build/newlib-XAuz1P/newlib-2.4.0.20160527/build_nano/arm-none-eabi/armv7e-m/fpu/newlib/libc/stdlib/../../../../../../../newlib/libc/stdlib/abort.c:63:未`对 μ_exit'的引用
/usr/lib/gcc/arm-none-eabi/5.4.1/../../../arm-none-eabi/lib/armv7e-m/fpu/libc_nano.a (lib_a-exit.o):在函数`exit'中:
/build/newlib-XAuz1P/newlib-2.4.0.20160527/build_nano/arm-none-eabi/armv7e-m/fpu/newlib/libc/stdlib/../../../../../../../newlib/libc/stdlib/exit.c:70:未定义对`_exit'的引用
/usr/lib/gcc/arm-none-eabi/5.4.1/../../../arm-none-eabi/lib/armv7e-m/fpu/libc_nano.a (lib_a-openr.o):在函数`_open_r'中:
/build/newlib-XAuz1P/newlib-2.4.0.20160527/build_nano/arm-none-eabi/armv7e-m/fpu/newlib/libc/reent/../../../../../../../newlib/libc/reent/openr.c:59:未定义对`_open'的引用
/usr/lib/gcc/arm-none-eabi/5.4.1/../../../arm-none-eabi/lib/armv7e-m/fpu/libc_nano.a (lib_a-sbrkr.o):在函数` sbrk_r'中:
/build/newlib-XAuz1P/newlib-2.4.0.20160527/build_nano/arm-none-eabi/armv7e-m/fpu/newlib/libc/reent/../../../../../../../newlib/libc/reent/sbrkr.c:58:对` sbrk'的引用未定义
/usr/lib/gcc/arm-none-eabi/5.4.1/../../../arm-none-eabi/lib/armv7e-m/fpu/libc_nano.a (lib_a-signalr.o):在函数` kill_r'中:
/build/newlib-XAuz1P/newlib-2.4.0.20160527/build_nano/arm-none-eabi/armv7e-m/fpu/newlib/libc/reent/../../../../../../../newlib/libc/reent/signalr.c:61:未定义对` kill'的引用
/usr/lib/gcc/arm-none-eabi/5.4.1/../../../arm-none-eabi/lib/armv7e-m/fpu/libc_nano.a (lib_a-signalr.o):在函数` getpid_r'中:
/build/newlib-XAuz1P/newlib-2.4.0.20160527/build_nano/arm-none-eabi/armv7e-m/fpu/newlib/libc/reent/../../../../../../../newlib/libc/reent/signalr.c:97:对`_getpid'的引用未定义
/usr/lib/gcc/arm-none-eabi/5.4.1/../../../arm-none-eabi/lib/armv7e-m/fpu/libc_nano.a (lib_a-writer.o):在函数`写入_r'中:
/build/newlib-XAuz1P/newlib-2.4.0.20160527/build_nano/arm-none-eabi/armv7e-m/fpu/newlib/libc/reent/../../../../../../../newlib/libc/reent/writer.c:58:未定义对`写入'的引用
/usr/lib/gcc/arm-none-eabi/5.4.1/../../../arm-none-eabi/lib/armv7e-m/fpu/libc_nano.a (lib_a-close.o):在函数`_close_r'中:
/build/newlib-XAuz1P/newlib-2.4.0.20160527/build_nano/arm-none-eabi/armv7e-m/fpu/newlib/libc/reent/../../../../../../../newlib/libc/reent/closer.c:53:未定义对`_close'的引用
/usr/lib/gcc/arm-none-eabi/5.4.1/../../../arm-none-eabi/lib/armv7e-m/fpu/libc_nano.a (lib_a-fstatr.o):在函数` fstat_r'中:
/build/newlib-XAuz1P/newlib-2.4.0.20160527/build_nano/arm-none-eabi/armv7e-m/fpu/newlib/libc/reent/../../../../../../../newlib/libc/reent/fstatr.c:62:对` fstat'的引用未定义
/usr/lib/gcc/arm-none-eabi/5.4.1/../../../arm-none-eabi/lib/armv7e-m/fpu/libc_nano.a (lib_a-isattyr.o):在函数` isatty_r'中:
/build/newlib-XAuz1P/newlib-2.4.0.20160527/build_nano/arm-none-eabi/armv7e-m/fpu/newlib/libc/reent/../../../../../../../newlib/libc/reent/isattyr.c:`:对"_isatty"的引用未定义
/usr/lib/gcc/arm-none-eabi/5.4.1/../../../arm-none-eabi/lib/armv7e-m/fpu/libc_nano.a (lib_a-lseekkr.o):在函数` lseek_r'中:
/build/newlib-XAuz1P/newlib-2.4.0.20160527/build_nano/arm-none-eabi/armv7e-m/fpu/newlib/libc/reent/../../../../../../../newlib/libc/reent/lseekr.c:`:对"_lseek"的引用未定义
/usr/lib/gcc/arm-none-eabi/5.4.1/../../../arm-none-eabi/lib/armv7e-m/fpu/libc_nano.a (lib_a-readr.o):在函数`读取_r'中:
/build/newlib-XAuz1P/newlib-2.4.0.20160527/build_nano/arm-none-eabi/armv7e-m/fpu/newlib/libc/reent/../../../../../../../newlib/libc/reent/readr.c:58:未定义对`读取'的引用
collect2:错误:LD 返回1退出状态
Makefile:45:目标'cpTest.out'的配方失败
make:***[cppTest.out]错误1
这是我当前的 makefile 文件:
SIMPLELINK_MSP432_SDK_INSTALL_DIR?=/opt/ti/simplelink_msp432p4_sdk_1_60_00_12
XDC_INSTALL_DIR ?=/home/username/ti/xdctools_3_50_04_43_core
FreeRTOS_INSTALL_DIR ?=/home/username/FreeRTOSv9.0.0
GCC_ARMCOMPILER ?=/usr/bin/arm-none-eabi-g
GXX_ARMCOMPILER ?=/usr/bin/arm-none-eabi-g
GCC_ARMCOMPILER_libs ?=/usr/lib/gcc/arm-none-eabi/5.4.1
rm = rm -f
rmdir = rm -rf
DEVNULL =/dev/null
CC ="$(GCC_ARMCOMPILER)"
Lnk ="$(GCC_ARMCOMPILER)"
OBJECTSNAMES = system_msp432p401r.obj startup_msp432p401r_gcc.obj main.obj
对象=$(addprefix $(outputdir)、$(OBJECTSNAMES))
name = cppTest
outputdir ?=./debug/
CFLAGS ="-i$(SIMPLELINK_MSP432_SDK_INSTALL_DIR)/SOURCE"-i$(SIMPLELINK_MSP432_SDK_INSTALL_DIR)/source/third_party/CMSIS/Include -D_MSP432P401R_-DDeviceFamily_MSP432P401x -MCU=mcartic-m=-mv4_mcarts=-m-m=-m-mcarts=-m-m-m-m-m-m-mcarts=-m=-m-m-m-m-mcarts=-m-m-m-m-m-m-m-m-mcarts=-m-m-m-m-m-m-m-m-m-mcarts=-m-m-m-m-m-m-m-m-mcartm-m-m-m-/include/newlib-nano
lfLAGS =-WL、-T、./msp432p401r.lds "-WL、-Map、$(outputdir)/$(name).map"-l$(SIMPLELINK_MSP432_SDK_INSTALL_DIR)/source/ti/display/lib /source/third_party/fatfs/lib /source/ti/devices/msp432p4xx/driverlib/gcc -l:display.am4fg_lfg_msp4rs -lfg_msp4r_mfgsps -l_msp4r_mfgsps -mfgv_msps -r_msp4r_mfgv_msps -msp4r_msps -mfgpf-ngv_mfgv_msps -msps -r_msp4pf-ngpf-ngv_mfgv_msps (/source/ti/drivers/lib /lib/thumb/v7e-m/fpv4-sp/hard)-msp4r_msp4pf-msps -msps -mfgfgfgpv_msps -msps -r_msps -msp4pv_msp4r_msps -msp4pf-msp
所有:outdir $(name).out
输出目录:
@ mkdir -p $(outputdir)
system_msp432p401r.obj:./system_msp432p401r.c
@回声建筑$@
@$(CC)$(CFLAGS)$<-c -o $(outputdir)/$@
startup_msp432p401r_gcc.obj:./startup_msp432p401r_gcc.c
@回声建筑$@
@$(CC)$(CFLAGS)$<-c -o $(outputdir)/$@
main.obj:./main.cc
@回声建筑$@
@$(GXX_ARMCOMPILER)-std=GNU+++14 $(CFLAGS)$<-c -o $(outputdir)/$@
$(name).out:$(OBJECTSNAMES)
@回波链接...
@$(LNK)$(objects)$(LFLAGS)-o $(outputdir)/$(name).out
清理:
@回波清洁...
@$(RM)$(objects)>$(DEVNULL) 2>&1
@$(RM)$(outputdir)/$(name).out >$(DEVNULL) 2>&1
@$(rm)$(outputdir)/$(name).map >$(DEVNULL) 2>&1
@ rm -rf $(outputdir)
我认为这只是一个错误的标志、但我不确定。