问题背景:
最近在使用AGM的AG32 CPLD+RISCV MCU,在进行VSCODE混合编程的时候遇到了linker报错:
collect2.exe: error: ld returned 1 exit status
直接原因:
undefined reference to `__gxx_personality_v0'
查找问题:
gcc编译时报错:对‘__gxx_personality_v0’未定义的引用_gxx personality-CSDN博客
__gxx_personality_v0
是GCC C++异常处理部分的一个函数。通常,当我们尝试用GCC(而非G++)去编译C++程序时,可能会遇到这个问题。GCC并不包含链接到C++库的指令,所以它无法找到这个函数的定义。
解决方法:
在命令行中显式地添加链接到C++库的指令。你可以通过添加-lstdc++
标志来做到这一点。
具体来说,在"platformio.ini"里面的加这个:
src_build_flags = -lstdc++