我一直在尝试不同的C++库,并发现以下内容: 这是一个简单的应用:
#include <iostream>
int main(int argc, char* argv[])
{
try
{
throw 1;
}
catch(...)
{
std::cout << "Exception is caught\n";
}
}
当我在ARM上编译它时,就像这样:
clang++ -stdlib=stdlibc++
异常被如预期一样捕获了。
但是当我将其改为:
clang++ -stdlib=libc++
我经常收到以下信息:
terminating with uncaught exception of type int
Aborted
我尝试使用不同的标志明确地启用异常,例如:
-fexceptions
-fcxx-exceptions
-frtti
但是这些标志都无效。未捕获异常的原因是什么?可能是libc++安装不正确吗?
P.S.
在PC上,使用libc++编译的相同程序正常工作。
两个平台上libc++版本相同-3.7.0-1ubuntu0.1
nm a.out | grep _Unwind
。可能会出现有关预期符号版本的信息,例如在x86上的“@@@GCC_3.0”。但我想知道链接阶段怎么可能成功呢。 - Oliv