我正在尝试构建一个C++项目,但是当它完成时会抛出此错误:
undefined reference to __cxa_end_cleanup'
Run Code Online (Sandbox Code Playgroud)
使用的工具链是ARM GCC 4.7.3,链接器自定义标志是:
-mthumb -march=armv6-m -T .\Generated_Source\PSoC4\cm0gcc.ld -g -Wl,-Map,${OutputDir}\${ProjectShortName}.map -specs=nano.specs -Wl,--gc-sections
Run Code Online (Sandbox Code Playgroud)
上述错误的一般原因是什么?什么链接器标志将解决此错误?
每当您收到未定义的错误时,您都不会链接满足您的构建选项的内容.你有三个选择,
在这种情况下,Ian Lance Taylor提供了-lsupc++所需的答案.此外,如果您正在使用gcc,则应切换到g++,这会为您的C++二进制文件添加适当的库.手册中提供了更多信息.
如果深入嵌入,可以尝试使用该函数编写自己的库.所述源__cxa_end_cleanup()是可用在这种情况下作为参考.看起来该函数是在异常条件期间恢复寄存器或exit().如果您不使用该功能,您可以存根该功能(风险自负); 但代码相当小,甚至在Cortex-M上,我会链接到提供的库.
| 归档时间: |
|
| 查看次数: |
8450 次 |
| 最近记录: |