嵌入式Arm的交叉编译Qt:未找到libpthread.so.0

时间:2011-05-13 13:45:23

标签: qt arm linker-errors cross-compiling embedded-linux

我正在尝试将Qt与WebKit交叉编译为嵌入式arm设备(freescale处理器)。我有一个arm-none-linux-gnueabi工具链。

Qt实际编译了,但是我在尝试编译演示时遇到了问题,特别是WebKit演示,这正是我所追求的。

我遇到的第一个问题是找不到libjscore,这是由于Qt处理静态构建的方式而导致的错误。事实证明,您可以复制该库并且它可以正常工作,请参阅here

现在编译再次破解说它找不到libpthread.so.0,这似乎是一个工具链问题而不是Qt问题。

在我的工具链中搜索目录树,有几个libpthreads。 的副本查找| grep libpthread 命令的输出在下面以供参考。

./arm-none-linux-gnueabi/sysroot/vfp/lib/libpthread-2.5.so
./arm-none-linux-gnueabi/sysroot/vfp/usr/lib/libpthread_nonshared.a
./arm-none-linux-gnueabi/sysroot/vfp/usr/lib/libpthread.a
./arm-none-linux-gnueabi/sysroot/vfp/usr/lib/libpthread.so_orig
./arm-none-linux-gnueabi/sysroot/vfp/usr/lib/libpthread.so
./arm-none-linux-gnueabi/sysroot/lib/libpthread-2.5.so
./arm-none-linux-gnueabi/sysroot/usr/lib/libpthread_nonshared.a
./arm-none-linux-gnueabi/sysroot/usr/lib/libpthread.a
./arm-none-linux-gnueabi/sysroot/usr/lib/libpthread.so_orig
./arm-none-linux-gnueabi/sysroot/usr/lib/libpthread.so

所以链接器似乎有些奇怪吗?另外,需要通过符号链接来创建 libpthread.so.0

注意:_libpthread.so_orig_和 libpthread.so 遵循此fix

非常感谢任何帮助或建议。我已经把头撞在墙上两天了。

由于

2 个答案:

答案 0 :(得分:1)

通常,您应确保您构建的工具链(或为您构建的工具链)与构建它的路径完全相同。库(* .so * .a)也应该位于相同的原始路径中。它应该是这样的:

<path>/bin
<path>/usr/lib
<path>/lib

不应移动这些文件夹。工具链可执行文件位于“bin”中,它查找的库位于“../usr/lib和../lib”中。此外,<path>可能会以某种方式硬编码到您的gcc二进制文件中。移动它似乎打破了局面。

答案 1 :(得分:-1)

目标是树莓PI 我将目标lib目录复制到myuserdirectory 将/ usr / lib定位到我的crosscompiler / usr / lib / directorie target / lib my crosscompiler / lib / directorie

我创建了两个符号链接:

ln -s /yourcrosscompilerusrlibdirectory /usr/lib/arm-linux-gnueabihf
ln -s /yourcrosscompilerusrdirectory /lib/arm-linux-gnueabihf

它对我有用 libpthread位于/yourcrosscompilerusrlibdirectory