我正在尝试将Qt与WebKit交叉编译,用于嵌入式ARM设备(飞思卡尔处理器)。我有一个arm-none-linux-gnueabi工具链。
Qt实际上已经编译了,但是我在尝试编译演示时遇到了问题,尤其是WebKit演示,这确实是我所追求的。
我遇到的第一个问题是找不到libjscore,这是由于Qt处理静态构建的方式造成的错误。 事实证明,您可以复制库并且可以工作,请参阅此处。
现在编译再次中断,说它找不到libpthread.so.0,这似乎是一个工具链问题而不是Qt问题。
在我的工具链中搜索目录树,有几个 libpthread。 下面是 find | 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 遵循此修复程序。
任何帮助或建议都非常感谢。 我已经用头撞墙两天了。
谢谢
一般来说,你应该确保你构建(或已经为你构建)的工具链与构建时完全相同的路径。 库 (*.so *.a) 也应位于相同的原始路径中。 它应该看起来像这样:
<path>/bin
<path>/usr/lib
<path>/lib
不应移动这些文件夹。 工具链可执行文件位于"bin"中,它查找的库位于"../usr/lib 和 ../lib"。 此外,<path>
可能会以某种方式硬编码到 gcc 二进制文件中。 移动它似乎会破坏东西。
目标是树莓派我将目标库目录复制到我的用户目录目标/usr/lib 到我的交叉编译器/usr/lib/directorietarget/lib my crosscompiler/lib/directorie
我创建了两个符号链接:
ln -s /yourcrosscompilerusrlibdirectory /usr/lib/arm-linux-gnueabihf
ln -s /yourcrosscompilerusrdirectory /lib/arm-linux-gnueabihf
这对我来说是工作libpthread在/yourcrosscompilerusrlibdirectory