赞
踩
- root@LQ:/home/packages# ./QGroundControl.AppImage
- /tmp/.mount_QGrounY4TbnX/QGroundControl: /lib/x86_64-linux-gnu/libm.so.6: version `GLIBC_2.29' not
- found (required by /tmp/.mount_QGrounY4TbnX/QGroundControl)
1)采用该链接的方案下载编译glibc-2.29:linux下编译安装glibc_没有开花的树-CSDN博客
- $ wget http://ftp.gnu.org/gnu/glibc/glibc-2.29.tar.gz
- $ tar -zxf glibc-2.19.tar.gz
- $ mkdir glibc-build
- $ cd glibc-build
- $ ../glibc-2.29/configure --prefix=/usr/lib/glibc-2.29
- $ make
- $ make install
2)下载编译了glibc-2.29还是不行,继续查找,找到该链接:
wkhtmltopdf: /lib/x86_64-linux-gnu/libm.so.6: version `GLIBC_2.27' not found (required by wkhtmltopd_maintain 的博客-CSDN博客
使用命令 strings /lib/x86_64-linux-gnu/libm.so.6 | grep GLIBC_ 可以查看 /lib/x86_64-linux-gnu/libm.so.6 这个文件支持的glibc的版本。发现当前并不支持 GLIBC_2.29 ,当前的系统是ubuntu 18.04。
- root@LQ:/usr/local/glibc-2.29/libio# strings /lib/x86_64-linux-gnu/libm.so.6 | grep GLIBC_
- GLIBC_2.2.5
- GLIBC_2.4
- GLIBC_2.15
- GLIBC_2.18
- GLIBC_2.23
- GLIBC_2.24
- GLIBC_2.25
- GLIBC_2.26
- GLIBC_2.27
- GLIBC_PRIVATE
继续上外网找,找到如下:How install GLIBC 2.29 or higher in Ubuntu 18.04 | DigitalOcean
至此,我还不知道该怎样更方便的解决,毕竟我不想换系统,记录一下,后续解决了再来编辑。有大佬知道也可以直接告诉我,感谢!
继续查找,终于找到方案了:
ImportError: /lib/x86_64-linux-gnu/libm.so.6: version `GLIBC_2.29‘ not found_gcyysh1314的博客-CSDN博客
结合前面的大佬的博客,我在configure时:
- $ cd glibc-build
- $ ../glibc-2.29/configure --prefix=/usr/lib/glibc-2.29
- $ make -j8
- $ make install
建立软连接
- #ll查看下libm.so.6连接情况
- #建立软链接
- ln -s /usr/lib/glibc-2.29/lib/libm-2.29.so libm.so.6
会报错 ln: failed to create symbolic link ‘libm.so.6’: File exists
此时需要强链接
- ln -sf /usr/lib/glibc-2.29/lib/libm-2.29.so libm.so.6
- #普通用户可以加上sudo
- #目前我每次链接后下次再使用还得重新链接,暂时不知道咋办
最后,用strings /lib/x86_64-linux-gnu/libm.so.6 |grep GLIBC_2.29命令查看即可:
- root@LQ:/home/packages# strings /lib/x86_64-linux-gnu/libm.so.6 |grep GLIBC_2.29
- GLIBC_2.29
- exp2@@GLIBC_2.29
- log2@@GLIBC_2.29
- pow@@GLIBC_2.29
- log@@GLIBC_2.29
- exp@@GLIBC_2.29
QGC的运行依赖qt,所以必须先安装qt,我选择了最新稳定版5.15.2。qt的安装教程可以参考这篇博客:Ubuntu18.04安装配置Qt5.15_sz590的专栏-CSDN博客
这是我安装时选择的组件,看个人开发需要:
- 组件 说明
- Desktop gcc 64-bit 桌面版 GCC 64bit编译环境生成的Qt库,是Qt的核心,必须安装
- WebAssembly 一种加载效率高的语言,适合编译到Web上
- Android 针对安卓应用开发的Qt库
- Sources Qt的源代码包
- Qt Charts 二维图表模块
- Qt Quick 3D 为Qt6开发的新的高级3D API
- Qt DataVisualization 三维数据图表模块
- Qt Lottie Animation Lottie动画
- Qt Purchasing 使 Qt 应用程序能够支持应用内购买
- Qt Virtual Keyboard 虚拟键盘
- Qt Wayland Compositor 用于基于Wayland 协议开发自定义显示服务器
- Qt WebEngine Qt Web引擎
- Qt Network Authorization 网络授权
- Qt WebGL Streaming Plugin 流媒体插件
- Qt Script (Deprecated) 脚本模块,已被弃用
- Qt Debug Information Files 跟踪调试Qt文件
- Qt Quick Timeline 支持基于关键帧的动画
接下来,重点说一下在安装qt时遇到的问题:
1)qt.qpa.xcb: could not connect to display
qt.qpa.plugin: Could not load the Qt platform plugin xcb in even though it was found.
This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem.
Available platform plugins are: minimal, xcb.
解决方法:①首先检查自己的系统中是否缺少 libxcb-xinerama0,如果缺少就执行这个来安装:
$ sudo apt install libxcb-xinerama0
②如果你已经安装了上述库,还是有问题,在终端执行:
- export QT_DEBUG_PLUGINS=1
- #然后再安装qt,看下具体报错信息
我的报错信息如下:QFactoryLoader::QFactoryLoader() ignoring "org.qt-project.Qt.QPA.QPlatformIntegrationFactoryInterface.5.3" since plugins are disabled in static builds。
网上搜索没有搜到答案,经过思索和查找,想到qt安装时会弹出安装界面,另外有大佬说这是在树莓派上安装常出现的问题,结合wsl并没有图形界面,于是乎我开始去搜索wsl中安装图形界面的教程,搜到了很多不错的,这里放1个比较好的链接:1)WSL2中使用VcXsrv实现xfce4图形界面+声音传输 - 知乎;
在参考这个链接的时候我犯了一些错误,导致折腾了半天,毕竟linux研究的比较少。
正确的配置姿势
- # 首先需要查看Windows系统和WSL2通信使用的虚拟网卡地址
- $ sudo vim /etc/resolv.conf
- # nameserver后面的地址就是Windows系统虚拟网卡的地址,记一下,同时需要取消下面两行内容的注释,禁用自动重新生成配置文件,否则重启后这个地址会变
- [network]
- generateResolvConf = false
-
-
- $ vim ~/.bashrc
- # 在文件最后追加下面内容,地址使用上面查看到的
- export DISPLAY=192.168.112.1:0
事实上我的系统中,这个地方我不能像他说的一样直接在resolv.conf中注释这些,我的系统中是这样说的:
- # This file was automatically generated by WSL. To stop automatic generation of this file, add the
- following entry to /etc/wsl.conf:
- # [network]
- # generateResolvConf = false
- nameserver 172.24.144.1
如果我注释了,关闭了wsl再打开的时候还是这个样子,因为它会自动生成。所以你得按照它的提示:To stop automatic generation of this file, add the following entry to /etc/wsl.conf。所以我创建了wsl.conf,但是创建完后我没有添加正确的写法,这个地方导致我卡了很久。你要添加的内容就是:
- # [network]
- # generateResolvConf = false
特别注意:我第一次添加的时候把注释去掉了,实际上你不应该注释掉。如果你注释掉了,你重启wsl后,你会发现你的系统中resolv.conf文件没有了,而且你想往里面写东西的时候,没法写!这个时候你需要去把wsl.conf中注释起来,然后再重启wsl就可以看到自动生成了新的resolv.conf。
最终,我在终端启动:startxfce4,运行成功,界面如下:
在使用xfce桌面安装过程,遇到问题后,尝试了通过远程桌面的方式,参考了如下链接:
Win10子系统安装图形化界面的两种方法;WSL2使用xrdp实现图形桌面 - 知乎
不过最后我还是没有成功,报错和这篇博客类似,即便我按照他的方法重启了电脑还是不行:Windows10访问Ubuntu子系统(WSL)的桌面环境_CodeMan-CSDN博客
qt的卸载参考这篇博客:Ubuntu下卸载Qt_Y_Hungry的博客-CSDN博客_ubuntu卸载qt
- #命令行方式
- sudo apt-get remove qt5-default qtcreator
当你在xfce4桌面中运行qt会发现是英文版的,你在tools选项中切换成中文的会发现是乱码的。英文版版本默认是没有中文字库的,所以会出现浏览器,终端等出现中文乱码,解决办法如下:
sudo apt install ttf-wqy-zenhei
sudo ./QGroundControl.AppImage
遇到的问题:
1)error while loading shared libraries: libgstgl-1.0.so.0: cannot open shared object file: No such file or directory
解决方法
sudo apt install gstreamer1.0-gl
参考链接:https://github.com/mavlink/qgroundcontrol/issues/8725
2)/usr/lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.26' not found
参考链接:/usr/lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.26' not found_hellochenlian的专栏-CSDN博客
- sudo apt-get install software-properties-common
- sudo add-apt-repository ppa:ubuntu-toolchain-r/test
- sudo apt update
- sudo apt install gcc-9
- sudo apt-get install libstdc++6
1)QStandardPaths: XDG_RUNTIME_DIR not set, defaulting to ‘/tmp/runtime-root‘
- #在/etc/profile末尾增加两句
- export XDG_RUNTIME_DIR=/usr/lib/ #a specific directory you specify
- export RUNLEVEL=3
-
- source /etc/profile
-
- #https://stackoverflow.com/questions/59790350/qstandardpaths-xdg-runtime-dir-not-set-defaulting-to-tmp-runtime-aadithyasb
这个好像无关紧要,我报这个问题依然可以安装。
2) ./qt-unified-linux-x64-3.2.3-online.run: error while loading shared libraries: libxkbcommon-x11.so.0: cannot open shared object file: No such file or directory.
手动安装libxkbcommon-x11.so.0
库即可。
在这里提供ubuntu
系统对应的安装指令: sudo apt-get install libxkbcommon-x11-0
.
如果你已经安装了该库,还是有这个问题,参考这个链接:错误"error while loading shared libraries: xxx.so.x" 的原因和解决办法_li27z的博客-CSDN博客
3)qt.qpa.plugin:Could not load the Qt platform plugin “xcb“问题
参考链接:https://www.jb51.net/article/193024.htm
在打印的错误信息的最下面,找到了引发错误的真正原因:
也就是Qt动态链接库的问题,当加载libqxcb.so库的时候,还需要加载libxcb-xinerama库。
切换到报错libxcb.so所在目录:
- #替换为自己的报错目录
- $ cd ~/Qt/Tools/QtCreator/lib/Qt/plugins/platforms$
运行ldd libqxcb.so,查看关联内容:ldd libqxcb.so。在linux中, ldd是list dynamic dependencies的缩写, 意思是, 列出动态库依赖关系。
发现不存在的库,如下(每个人的可能不一样):
然后缺什么就安装什么就好,我安装完后就可以正常启动qt了。
4)启动qgc提示second instance的问题
- ps -ef #查看系统中运行的进程
- kill -9 PID # PID为相关的QGC进程
5)qrc:/qml/QGroundControl/FlightMap/QGCVideoBackground.qml:19 module "org.freedesktop.gstreamer.GLVideoItem" is not installed
这个我自己瞎尝试的,安装了:gstreamer1.0-plugins-good和gstreamer1.0-qt5。安装完后qgc可以运行了。可能还有些小问题,后续再继续添加!
备注:有时候安装某个库时tab无法提示时,可以先update一下!另外,你的make和cmake也得先安装好!
以上就是整个安装历程,花了我大半天的时间,最终还是搞定了,感谢那么多大佬分享自己的博客,这也是我开始写博客记录分享的原因,另外我尽量不写别人已经写过的,只写自己的和别人虽然写过但是又很重要的点!
如果文章对你有帮助,还请给小弟一点鼓励---点个赞,感谢各位!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。