2011-03-03 51 views
2

我在部署将Qt库用于ARM设备的示例应用程序时遇到了一些困难。我使用为我的系统提供的交叉编译器编译这些库,我将这些二进制文件复制到设备上,并使用相同的编译器编译了一个示例应用程序。当我尝试开始时,这就是我所得到的;针对ARM设备的交叉编译库

/usr/lib/libstdc++.so.6:版本未找到(由./libQtNetwork.so.4需要)`CXXABI_ARM_1.3.3'

/usr/lib/libstdc++.so.6 :未找到版本'CXXABI_ARM_1.3.3'(需要./libQtCore.so.4)

什么可能导致这种情况?我使用了制造商提供的工具链,所以它应该没问题......编译器是否正确,但它不是链接到它提供的libstC++,而是链接到我的系统中的libstdC++,在链接之后路径? 谢谢!

+1

看来,您在运行时使用的'libstdC++'版本与编译期间工具链使用的版本不同。 – jschmier 2011-03-03 20:06:38

+0

你的意思是它们是用不同的编译器或不同的版本号编译的?因为工具链附带的版本号与设备版本号相同,所以我认为它也使用相同的编译器进行编译。所以,也许在编译期间,我使用了正确的编译器,但是它正在编译x86库。我该如何检查并强制使用ARM库? – 2011-03-03 23:20:51

+0

我试图编译一个仅使用C++标准库的示例应用程序,针对ARM进行交叉编译,实际上问题依然存在。我如何强制编译器使用ARM编译的std库而不是我在系统中使用的库? – 2011-03-04 08:28:49

回答

1

就我所见,对我的问题的第一条评论正是解决方案。该库的版本是相同的,但不兼容。我将该库移动到设备上,一切正常。

0

从我的经验来看,我有一个带有GCC工具链的FriendlyARM。为了生成正确的代码,我需要手动指定-mcpu,-mfp,-mabi-mabi-float

如果您构建自己的GCC,则可以设置默认值,但至少在我的开发包中,它们带有错误的默认值。