一、开发环境
在经过前面的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的。
其实小的细节还有很多。诸如缺少某些库,直接安装就可以,不是大问题,这里就没再说明出来。
只是把一些重要的问题进行了分析和解决,供大家在遇到类似问题时可以参考。
四、总结
为什么不愿意重做系统,一个重要原因就在于此。
很长的时间过去,新系统已经跨了多个版本,内心很是想用新的,但旧的库的支持性未必好。这就可能会陷入两头堵的境界。
也亏得这次还可以兼容,如果真遇到不能兼容的,可就真的只能回退老系统了。
以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。
发表评论