一、开发环境
在经过前面的Ubuntu26.04的成功安装和相关的CUDA13.2的安装成功后。整体的硬件和软件的基础环境就搭建完成了。但距离开发需要的环境还有一大段的问题。所以仍然要再接再厉,将后续开发需要的C++和Qt及其它相关的支持库和第三方框架等安装成功。
二、基础需求
在实际的开发环境中,需要的相关UI框架和相关库很多,下面把出现主要相关的分析说明一下:
- Qt开发框架
这个不用多说,广泛的UI界面的开发框架,开发环境也是必须的 - dubs相关库
整体环境的通信调度管理使用的这个库,需要说明的,不要使用C的dbus库 - sqlite3及相关ODB框架
应用到了文件型数据库sqlite3以及其ORM映射的ODB库。之所以选择Ubuntu的一个重要原因也在于此。使用Debain需要自行编译相关的源码,安装很多第三方的依赖,成本过高 - 硬件相关的库
应用到了硬件采集卡,所以需要安装相关的驱动等程序及相关的模块
其实还是需要不少的其它的环境的,如一些医疗的相关库如DICOM和日志等库,但这些都比较好安装,不容易出现问题,这里就不再一一的说明了。
三、问题分析及解决
下面主要看具体的问题。问题分成两大类,一种是安装相关的问题,另外一种是编译时出现的相关问题。下面首先先看安装时的问题:
-
Qt安装速度慢
这个是一个常见问题,可以耗时间安装,也可以修改系统的镜像源,也可以直接使用:
./qt-online-installer-linux-x64-online.run --mirror https://mirrors.tuna.tsinghua.edu.cn/qt 或 ./qt-online-installer-linux-x64-online.run --mirror https://mirrors.ustc.edu.cn/qtproject 如果后续继续安装可使用: ./MaintenanceTool --mirror https://mirrors.tuna.tsinghua.edu.cn/qt -
dkms安装的问题
这个是Ubuntu26的内核过新的问题产生的,已有专门的文章分析
然后再看一下编译的问题。在安装好基本的相关支持环境后,对原有的代码进行了编译,出现了下列的问题:
-
dbus库的版本问题
这个问题比较麻烦,编译从一个相对简单的项目开始,直接报dbus库的一系列的问题。主要原因其实就是dbus版本太新,导致API接口的不同。但大家都明白,升级版本往往相对容易,但降级,特别是在新系统上降级比较麻烦。但这也是没办法的事。已经无法使用apt自动安装了,需要去官方库下载老版本手动安装:#下载
使用 Wget
wget --tries=3
-O /tmp/libsdbus-c++1_1.1.0-3_amd64.deb
'https://archive.ubuntu.com/ubuntu/pool/universe/s/sdbus-cpp/libsdbus-c++1_1.1.0-3_amd64.deb'wget --tries=3
-O /tmp/libsdbus-c++-dev_1.1.0-3_amd64.deb
'https://archive.ubuntu.com/ubuntu/pool/universe/s/sdbus-cpp/libsdbus-c++-dev_1.1.0-3_amd64.deb'使用 Curl
curl -fL --retry 2
-o /tmp/libsdbus-c++1_1.1.0-3_amd64.deb
'https://archive.ubuntu.com/ubuntu/pool/universe/s/sdbus-cpp/libsdbus-c++1_1.1.0-3_amd64.deb'curl -fL --retry 2
-o /tmp/libsdbus-c++-dev_1.1.0-3_amd64.deb
'https://archive.ubuntu.com/ubuntu/pool/universe/s/sdbus-cpp/libsdbus-c++-dev_1.1.0-3_amd64.deb'## 安装 sudo apt-get install -y --allow-downgrades \ /tmp/libsdbus-c++1_1.1.0-3_amd64.deb \ /tmp/libsdbus-c++-dev_1.1.0-3_amd64.deb
安装成功后,这个问题解决。但后来又出来同样的问题。过了一个周末回来后发现又出现这个问题了,经过查找,发现是系统自动升级了。而Ubuntu26.04又没有直接操作的界面。但可以使用下面的命令安装:
sudo apt install software-properties-gtk
安装成功后,会在系统应用程序中找到它,打开,找到Updates,把相关的检查日期改成从不,后面的相关也改成不下载,不安装,只提醒即可
- Qt核心库编译无法找到
这个比较恶心,明明相关的Quick已经安装,但却报找不到。后来发现是Quick依赖的OpenGL未安装,同样也会报这类错误。解决的方式是安装OpenGL:
sudo apt install libgl1-mesa-dev
安装成功后,即可解决此类问题。所以此处必须特别注意依赖库的递归依赖问题
- 相关算法头文件无法找到
编译时发现一些基础的数据类型和算法接口无法通过。但在老的系统中都可以正常编译。应该是最新的编译器更加严格的限制了相关头文件的处理。这个很好解决,缺少哪个直接在相关文件中包含即可
- 硬件库的API不兼容问题
这个属于库安装的版本不对,使用命令查看:
dpkg-query -W -f='${Package}\t${Version}\n' libxxx
发现版本号不同,安装最新的版本即可。而且不需要卸载前面的,覆盖安装即可正常使用
- ODB编译时的g++问题
ODB在编译时已经强行指定g+±13,这个问题其实不是算大问题。主要是需要重新安装相关版本即可:
sudo apt install gcc-13 g++-13
安装成功后不会影响当前的系统默认,因为ODB是直接指定使用g+±13的。
其实小的细节还有很多。诸如缺少某些库,直接安装就可以,不是大问题,这里就没再说明出来。只是把一些重要的问题进行了分析和解决,供大家在遇到类似问题时可以参考。
四、总结
为什么不愿意重做系统,一个重要原因就在于此。很长的时间过去,新系统已经跨了多个版本,内心很是想用新的,但旧的库的支持性未必好。这就可能会陷入两头堵的境界。也亏得这次还可以兼容,如果真遇到不能兼容的,可就真的只能回退老系统了。