我遇到这种情况:
bitbake -c populate_sdk myimagename-sdk
使用Qt Creator(在调试和运行时)它警告我没有一些库。
无法找到动态链接断点功能。 GDB将无法调试共享库初始化程序 并跟踪显式加载的动态代码。不能加载22个库的共享库符号,例如: /usr/lib/libQt5Quick.so.5。 使用" info sharedlibrary"命令查看完整列表。 你需要"设置solib-search-path"或者"设置sysroot"?
我暂时通过将位于/lib
和/usr/lib
的设备上的库复制到名为sysroot
的文件夹中来解决问题,并通过添加set sysroot /home/user/sdkroot/sysroot
来设置qtcreator调试器
为避免我的临时解决方案,在编译sdk时,可以包含所有库(包括那些转到设备的库)吗?
我搜索了local.conf
或*.bb includes
的设置,却没有找到任何有用的内容。
提前致谢并原谅我的英文
我试图"使用" info sharedlibrary"命令查看完整列表" (正如qtcreator所建议的),对于一个非常简单的程序,请遵循以下步骤:
gdbserver --multi :1000
./arm-poky-linux-gnueabi-gdb
#启动我的工具链的gdb target extended-remote 192.168.77.1:10000
run /tmp/myapp
#以前由qtcreator file ~/sdk/example/build-myapp-kit_device-Debug/myapp
#load symbol table break 44
#breakpoint run
info sharedlibrary
这是我得到的清单:
/usr/lib/libQt5Core.so.5; /usr/lib/libstdc++.so.6; /lib/libgcc_s.so.1; /lib/libc.so.6; /lib/libthread.so.0; /lib/libz.so.1; /usr/lib/libicui18n.so.53; /usr/lib/libicuuc.so.53; /lib/librt.so.1; /lib/libm.so.6; /lib/ld-linux-armhf.so.3
这些库已经存在于我的toochain的sysroot中(我在qtcreator工具包中链接了#34; sysroot")。通过二进制比较,结果是它们与我从设备中拾取的库相同,并且我在qtcreator中添加了(如上所述:set sysroot /home/user/sdkroot/sysroot
)
如果我的应用所请求的库已经在工具链的sysroot中,为什么我仍然需要从设备添加它们?
答案 0 :(得分:0)
而不是bitbake -c populate_sdk myimagename-sdk
你应该使用bitbake meta-toolchain-qt5
这将包括所有qt5-dev和qt5-mkspec以及其他路径配置到您的工具链中;
您也可以将meta-toolchain-qt5配方中的内容复制并粘贴到您的sdk中。
食谱在这里: https://github.com/meta-qt5/meta-qt5/blob/master/recipes-qt/meta/meta-toolchain-qt5.bb
答案 1 :(得分:0)
构建基于图像的SDK应该可以为您提供实际图像中的所有库。
对于Qt5,您的图像应包括:
inherit populate_sdk_qt5
当您运行bitbake -c populate_sdk myimagename
时,应确保在SDK中获得Qt5。请注意,您应该可以在此处使用普通图像。
另外值得注意的是,目前Pyro中存在一个回归,导致SDK中缺少一些库头文件(但这并不适用于Qt5)。
答案 2 :(得分:0)
您可以找到有关设置Qtcreator以便嵌入式Linux交叉编译的信息here。有两个三件事是特定于相关公司的链接,但在其他方面非常通用。