使用gcc-4.8.5编译但使用gcc-4.6.4时,Raspberry Pi上没有发现C++异常
C++ Exceptions not being caught on Raspberry Pi when compiled with gcc-4.8.5 but works with gcc-4.6.4
Edit:这个问题不在我的代码中,它已经在许多其他问题上进行了测试,没有问题。这是一个gcc交叉编译问题。
我正在Ubuntu x64上用g++交叉编译一个大型C++程序,以便在Raspberry Pi 2上运行。当使用gcc-4.6.4时,一切似乎都正常。当使用gcc-4.8.5时,异常似乎正在泄漏并导致程序中止。我尝试了一个使用gcc-4.8.5的异常捕获的最小示例,并且最小情况似乎可以正常工作。我的实际程序要复杂得多,异常捕获似乎在某个地方丢失了。
我是否缺少一些g++设置来改进异常处理?
我正在用交叉工具ng 1.22 编译工具链
编辑:这基本上就是代码所做的:
//error_function may be deeper in the stack
void error_function()
{
throw std::runtime_error("This is an error");
}
try
{
error_function();
}
catch (std::exception&)
{
//Not being caught
}
通过设置-O0关闭优化似乎可以解决问题。这个bug似乎是gcc 4.8.5 ARMv6硬浮动构建特有的。
相关文章:
- CMake项目Boost库错误:Boost/config/compiler/gcc.hpp:165:10:致命错误:cs
- 奇怪的结构&GCC&clang(void*返回类型)
- GCC本机矩阵运算库
- PowerPC ppc64le上的Gcc Woverloaded虚拟错误
- gcc和c++17的过载解析失败
- 数据成员SFINAE的C++17测试:gcc vs clang
- GCC对可能有效的代码抛出init list生存期警告
- 如何解决gcc编译器优化导致的centos双编译器设置中的分段错误
- 使用 GCC 卸载的 OpenMP 卸载失败,并出现"Ptx assembly aborted due to errors"
- 为什么与常规GCC不同,即使有"学究性错误",MinGW-GCC也能容忍丢失的返回类型
- 使用gcc从静态链接的文件中查找可选符号
- 普通环路未使用gcc 4.8.5自动矢量化
- 基于树莓pi的tensorflow lite量化ssd目标检测
- 有了gcc,是否可以链接库,但前提是它存在
- 在clang++预处理器中确定gcc工具链版本
- 为什么 gcc 编译这个而 msvc 没有
- 为什么lambda在clang上崩溃而不是在gcc上崩溃
- 我可以检测和更改 gcc/g++ 中结构的当前数据对齐设置吗?
- 使用gcc-4.8.5编译但使用gcc-4.6.4时,Raspberry Pi上没有发现C++异常
- 在 GCC 中交叉编译 Raspberry Pi.从哪里开始