你在 DeepSeek,我在 deepin Coding

星夢妙者
发布: 2025-04-23 19:20:08
原创
356人浏览过

2025年春节期间,deepseek 引发的人工智能热潮依然炙热。各大巨头如百度、腾讯、阿里纷纷将 deepseek 整合进他们的产品中,而更多的竞争者也推出了自己的大模型,声称已经超越了 deepseek。面对这波接一波的消息,仿佛我们的世界即将被 ai 颠覆:ai 公务员、deepseek 推理、一体机 ai 智能体、裁员风波等,消息满天飞,似乎人类社会一夜之间将发生翻天覆地的变化。

作为开发者,我自然也会关注与 AI 相关的资讯。然而,信息量大了,心中难免有些困惑:一方面是 AI 的飞速进展,似乎一夜之间就能取代人类;另一方面,我又被工作中的具体问题所困扰。这段时间没有更新公众号,就是因为工作的影响。在这期间,我一直被浏览器的系统问题搞得焦头烂额,实在没有心思去写文章。

说到底,我碰到的就是大多数 C/C++ 程序员不愿面对的兼容性难题,特别是在国产化替代的浪潮下,操作系统和硬件平台日益增多,兼容性问题已经成了绕不开的痛点。

随着国产化软硬件的崛起,开发者不得不面对更多的平台支持问题。就拿 CPU 架构来说,有 x86(x64)、龙芯(LoongArch64、MIPS)、申威(SW64)、ARM(飞腾、华为麒麟等),操作系统则有 UOS(包括 deepin)和麒麟(包括 OpenKylin 等),不同版本的操作系统也在不断变化,像 UOS 有 1050、1060、1070 等版本。只要稍一数,就能有几十种软硬件平台的组合。

通常情况下,操作系统和系统库对跨平台的支持做得还不错,作为应用程序开发者,一般不会针对所有平台开发,而是选择主流平台组合,这样就能避免大多数兼容性问题。但是,如果碰到问题,就会是比较棘手的难题。因为同样的代码,在不同的平台上表现不一样,甚至崩溃,一般需要系统开发者配合一起查找问题。

说实话,尽管 Windows 常被吐槽,但从兼容性上看,Windows 做得还是相当不错的。而 Linux 系统版本众多,经常更新,导致兼容性相对较差。

说到兼容性,就不得不提 ABI(应用二进制接口)。ABI 兼容性是指不同版本的库之间保持一致性,确保旧版程序能够在新版库中正常运行。如果 ABI 不兼容,程序很可能会出现运行不正常的问题。

ABI 兼容动态库的 ABI 兼容性是指不同版本的动态库能保持一致的二进制接口,使得旧版本编译的程序能在新版库环境下正常运行。下面我们来看一下 ABI 兼容的几个关键点:

ABI 定义内容:ABI 包含了数据类型的大小、数据结构的内存布局、函数调用约定(参数传递、返回值处理)、符号命名规则、异常处理机制等。这些细节决定了程序如何正确地传递数据并接收返回值。动态库版本管理与符号版本控制:为了确保兼容性,很多动态库(如 glibc)采用符号版本控制机制。通过为每个符号赋予版本号,确保新旧版本共存时,程序会加载正确的版本。向后兼容性与 ABI:保持新版动态库在扩展功能时,不改变原有接口和行为,保持 ABI 向后兼容。开发者在更新库时,要确保原有接口不受影响。编译器与链接器的角色:编译时,程序根据动态库的头文件和符号信息生成调用代码,链接器会记录符号和版本信息,确保程序能在运行时加载正确的库。glibc 和 OpenSSL 在 ABI 兼容性方面做得很好,但问题在于,这些库变得越来越复杂,废弃的接口越来越多,导致库文件越来越大。于是,很多系统开始采用精简版的 C 库,例如 Android 使用 Bionic 库,BoringSSL 则从 OpenSSL 中分叉出来,删除了很多接口,但不提供 ABI 兼容。

由此可见,软件开发也是一个平衡的艺术,需要开发人员根据实际情况进行取舍。

sysroot 与系统兼容:sysroot 是嵌入式开发中引入的概念,指向一个目录,该目录模拟目标系统的根文件系统结构,包含了编译、链接、运行所需的头文件、库文件等。

在嵌入式开发中,开发者通常在一个平台上(如 x86 主机)进行开发,但目标平台可能是另一个架构(如 ARM)。由于平台架构不同,直接在主机上编译的程序无法在目标平台上运行,因此需要使用 sysroot 来确保编译的应用程序能够在目标系统上正常运行。

DeepSeek App
DeepSeek App

DeepSeek官方推出的AI对话助手App

DeepSeek App 78
查看详情 DeepSeek App

sysroot 的作用包括:

提供一致性:模拟目标系统的文件结构,确保编译器和链接器使用正确的库和头文件。支持交叉编译:sysroot 为目标平台提供专用的库路径,确保生成的可执行文件能够调用目标系统的资源。简化构建流程:通过 sysroot,开发者可以统一管理编译依赖,减少环境配置错误的风险。Chromium 构建与 sysroot:Chromium 构建系统提供了一个 use_sysroot 选项。当 use_sysroot 设置为 true 时,Chromium 会下载一个 Debian Bullseye 版本的 sysroot 作为编译环境,帮助构建符合“最低公共平台”标准的二进制文件,从而确保它们能够在多个发行版上运行,包括 Debian、Ubuntu、Deepin 等。

Bullseye 的库版本相对稳定,且被多个发行版支持,这使得通过它编译的二进制文件在新版系统中能够兼容运行。Chromium 构建系统会对库依赖和编译选项进行严格控制,避免引入最新系统才有的特性,确保兼容性。

然而,sysroot 也并非万能。虽然它能够解决很多兼容性问题,但也存在一些挑战。例如,浏览器在 ARM 架构下开启沙盒时会崩溃,最终通过升级 sysroot 来解决。随着操作系统和库版本不断更新,如何更新 sysroot 中的库,确保与目标系统保持一致,依然是一个挑战。

玲珑应用解决方案:玲珑应用(Linglong Application)是近年来在国产操作系统中逐步推广的一种应用包格式。关于玲珑应用的介绍请参考我之前的文章:

国产系统之如意玲珑[将 QT 应用程序打包成如意玲珑软件包](将 QT 应用程序打包成如意玲珑软件包)

这里说一说玲珑应用在解决系统兼容性方面的几个突出的优势:

跨平台兼容性:玲珑包可以包含完整的应用程序及其所需的库文件,避免了依赖系统底层库的版本不同而引发的兼容性问题。简化部署:用户只需下载一个玲珑包,就能够直接在目标操作系统上运行,不需要担心操作系统的版本、库文件等环境问题。系统资源隔离:玲珑包将应用程序和其依赖封装在一个独立的环境中,避免了与其他系统程序的冲突,提高了系统的稳定性。

结语:在人工智能如 DeepSeek 一样迅猛发展的今天,系统软件开发者依然在跨平台兼容性、系统库 ABI 兼容性和 sysroot 管理等问题上面临挑战。你在 DeepSeek,我在 deepin Coding,尽管我们的方向不同,但我们都在各自的领域努力探索、前行,我们都有光明的未来。

你在 DeepSeek,我在 deepin Coding

以上就是你在 DeepSeek,我在 deepin Coding的详细内容,更多请关注php中文网其它相关文章!

AI工具
AI工具

AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型,支持联网搜索。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号