[software development] 请教大家,Linux各发行版的兼容性是怎样的?
Tofloor
poster avatar
致平振华
deepin
2023-07-26 02:21
Author

如题。

我比较疑惑,各发行版的内核来源都是一样的吧,那如果一个应用适配了其中一个发行版,那在其它发行版上也能正常运行么?

如果不能完全兼容,那是只要稍作改变(比如只要重新打包、重新编译),还是要全部重写?

Reply Favorite View the author
All Replies
2 / 2
To page
W2J
deepin
2023-07-26 20:54
#21
致平振华

那各个发行版的编程软件是一样的么?还是说有针对不同库的不同编程软件或插件?

firefox(火狐)诞生的时候,同时还发明了GTK图形库,

GTK图形库的诞生,催生了gnome桌面style。

firefox的出世还携带了gecko渲染引擎,

gecko开源又催生了半闭源Chrome webBrowser。

===

从桌面环境起步,Deepin并没走GTK+旧路,而是走了QT新路。

Deepin还一并创建了DTK基础库和玲珑ABI作为布局,甚至包括一门语言(类似mozilla的路子?),

很多事物的发展是一脉相承的

Reply View the author
致平振华
deepin
2023-07-26 20:58
#22
安洛

编程软件是个挺宽泛的概念。程序员编程要用到很多不同类型的工具。其中像是编辑器这种的就一般不同发行版都有一样的。但是像编译器,调试器,运行时这种的就千差万别了。也确实有针对某些库的专门编程软件,像是qt creator这种,要写用到qt库的东西几乎一定要用到它。但很多库也不太需要专门的编程软件去适配。这东西很难一概而论。

谢谢回复!

Reply View the author
致平振华
deepin
2023-07-26 21:00
#23
W2J

firefox(火狐)诞生的时候,同时还发明了GTK图形库,

GTK图形库的诞生,催生了gnome桌面style。

firefox的出世还携带了gecko渲染引擎,

gecko开源又催生了半闭源Chrome webBrowser。

===

从桌面环境起步,Deepin并没走GTK+旧路,而是走了QT新路。

Deepin还一并创建了DTK基础库和玲珑ABI作为布局,甚至包括一门语言(类似mozilla的路子?),

很多事物的发展是一脉相承的

谢谢回复。不过,我不懂编程,你说的我看不太懂。

不过,我也没想往一方面钻研,知道个大概就可以了。

Reply View the author
致平振华
deepin
2023-07-26 21:02
#24
致平振华

谢谢回复。不过,我不懂编程,你说的我看不太懂。

不过,我也没想往一方面钻研,知道个大概就可以了。

没想住"这"一方面钻研。

Reply View the author
致平振华
deepin
2023-07-26 21:05
#25
安洛

编程软件是个挺宽泛的概念。程序员编程要用到很多不同类型的工具。其中像是编辑器这种的就一般不同发行版都有一样的。但是像编译器,调试器,运行时这种的就千差万别了。也确实有针对某些库的专门编程软件,像是qt creator这种,要写用到qt库的东西几乎一定要用到它。但很多库也不太需要专门的编程软件去适配。这东西很难一概而论。

有没有可能在开发A发行版软件时,程序中调用了b功能,但b功能是发行版B专有的,和A没关系?

Reply View the author
致平振华
deepin
2023-07-26 22:56
#26
致平振华

有没有可能在开发A发行版软件时,程序中调用了b功能,但b功能是发行版B专有的,和A没关系?

怎么避免这种情况?

单纯靠程序员记忆,知道哪些是发行版A的功能和函数,哪些不是?

还是在写代码过程中开发工具会给出列表供选择?

还是前面不提示,但在编译时报错?

还是其它的什么方式?

Reply View the author
安洛
deepin
2023-07-26 23:49
#27
致平振华

有没有可能在开发A发行版软件时,程序中调用了b功能,但b功能是发行版B专有的,和A没关系?

这种情况确实可能出现。

如果程序员希望开发一款适配A发行版的软件,那么他肯定会配置一个A发行版的开发环境,不管是装一个A发行版还是用docker或者虚拟机。在这种情况下,程序员可以通过发行版的包管理器、manpage手册,包括编译器提示,编辑器语法提示(你说的弹出一个列表也是其中一种)等多种信息来判断某个功能是否可以调用。但是,程序员一般不会特意去记某个发行版的功能调用情况(事实上,因为发行版也会更新,这东西记了也没用),虽然如果开发时间长了多多少少会有些经验。

其实也有另一种解决方法,就是想办法把B发行版的这一部分功能移植到A发行版上,甚至说自己实现一个。这样程序员就不需要修改自己的代码。像是docker之类的容器方案就能直接把整个B发行版搬到A发行版上。实际上在出现兼容性问题时,这种解决方案可能是最简单的。

Reply View the author
致平振华
deepin
2023-07-27 00:10
#28
安洛

这种情况确实可能出现。

如果程序员希望开发一款适配A发行版的软件,那么他肯定会配置一个A发行版的开发环境,不管是装一个A发行版还是用docker或者虚拟机。在这种情况下,程序员可以通过发行版的包管理器、manpage手册,包括编译器提示,编辑器语法提示(你说的弹出一个列表也是其中一种)等多种信息来判断某个功能是否可以调用。但是,程序员一般不会特意去记某个发行版的功能调用情况(事实上,因为发行版也会更新,这东西记了也没用),虽然如果开发时间长了多多少少会有些经验。

其实也有另一种解决方法,就是想办法把B发行版的这一部分功能移植到A发行版上,甚至说自己实现一个。这样程序员就不需要修改自己的代码。像是docker之类的容器方案就能直接把整个B发行版搬到A发行版上。实际上在出现兼容性问题时,这种解决方案可能是最简单的。

大致明白了。辛苦版主了,非常感谢!

Reply View the author
致平振华
deepin
2023-07-27 00:22
#29
安洛

这种情况确实可能出现。

如果程序员希望开发一款适配A发行版的软件,那么他肯定会配置一个A发行版的开发环境,不管是装一个A发行版还是用docker或者虚拟机。在这种情况下,程序员可以通过发行版的包管理器、manpage手册,包括编译器提示,编辑器语法提示(你说的弹出一个列表也是其中一种)等多种信息来判断某个功能是否可以调用。但是,程序员一般不会特意去记某个发行版的功能调用情况(事实上,因为发行版也会更新,这东西记了也没用),虽然如果开发时间长了多多少少会有些经验。

其实也有另一种解决方法,就是想办法把B发行版的这一部分功能移植到A发行版上,甚至说自己实现一个。这样程序员就不需要修改自己的代码。像是docker之类的容器方案就能直接把整个B发行版搬到A发行版上。实际上在出现兼容性问题时,这种解决方案可能是最简单的。

"程序员可以通过发行版的包管理器、manpage手册,包括编译器提示,编辑器语法提示(你说的弹出一个列表也是其中一种)等多种信息来判断某个功能是否可以调用":

就是每个发行版都有自己的开发工具,是吧。这个开发工具可能是从头写出来的,也可能是对现在工具进行一定程度的定制,然后加入开发包提供给开发人员。

我的理解对么?

Reply View the author
安洛
deepin
2023-07-27 06:00
#30
致平振华

"程序员可以通过发行版的包管理器、manpage手册,包括编译器提示,编辑器语法提示(你说的弹出一个列表也是其中一种)等多种信息来判断某个功能是否可以调用":

就是每个发行版都有自己的开发工具,是吧。这个开发工具可能是从头写出来的,也可能是对现在工具进行一定程度的定制,然后加入开发包提供给开发人员。

我的理解对么?

不太对。

我感觉可能我表达上有点点问题。如果看不明白的尽管提出来。

以现在很火的编辑器vscode为例。vscode会去扫描库的安装目录,然后根据扫描到的文件及内容告诉开发者可以使用的库和函数以及如何使用。

不同发行版上安装的vscode都是一样的。但是,不同发行版安装的库不一样,vscode扫描到的文件就不一样,最终呈现给开发者的结果自然就不一样。

这也是为了方便程序员开发的结果。如果不同发行版需要自己开发不同的开发工具,那发行版开发起来也麻烦,程序员学起来也麻烦。所以库、发行版、开发工具之间立下了一些约定:库的开发者提供的文件会遵循特定的格式和规范,发行版在安装软件的时候会把相应的文件放在特定的地方,然后开发工具就能通过扫描这些特定的目录,然后通过特定的格式读取出库的相关信息,最后呈现给开发者。只要大家都遵守这个约定,相同的开发工具就能在不同的发行版上使用;相同的发行版也可以使用不同的开发工具来开发。

Reply View the author
enforcee
deepin
2023-07-27 21:59
#31
W2J

firefox(火狐)诞生的时候,同时还发明了GTK图形库,

GTK图形库的诞生,催生了gnome桌面style。

firefox的出世还携带了gecko渲染引擎,

gecko开源又催生了半闭源Chrome webBrowser。

===

从桌面环境起步,Deepin并没走GTK+旧路,而是走了QT新路。

Deepin还一并创建了DTK基础库和玲珑ABI作为布局,甚至包括一门语言(类似mozilla的路子?),

很多事物的发展是一脉相承的

GTK是gimp带的,原名叫gimp toolkit
chrome的blink渲染引擎是webkit改的,而webkit传承自KDE的KHTML(要不是LGPL许可证限制,我不会相信苹果、谷歌这些公司会把这种强势软件开源)

Reply View the author
致平振华
deepin
2023-08-02 03:01
#32
安洛

不太对。

我感觉可能我表达上有点点问题。如果看不明白的尽管提出来。

以现在很火的编辑器vscode为例。vscode会去扫描库的安装目录,然后根据扫描到的文件及内容告诉开发者可以使用的库和函数以及如何使用。

不同发行版上安装的vscode都是一样的。但是,不同发行版安装的库不一样,vscode扫描到的文件就不一样,最终呈现给开发者的结果自然就不一样。

这也是为了方便程序员开发的结果。如果不同发行版需要自己开发不同的开发工具,那发行版开发起来也麻烦,程序员学起来也麻烦。所以库、发行版、开发工具之间立下了一些约定:库的开发者提供的文件会遵循特定的格式和规范,发行版在安装软件的时候会把相应的文件放在特定的地方,然后开发工具就能通过扫描这些特定的目录,然后通过特定的格式读取出库的相关信息,最后呈现给开发者。只要大家都遵守这个约定,相同的开发工具就能在不同的发行版上使用;相同的发行版也可以使用不同的开发工具来开发。

换了浏览器,几天没登录论坛了。

谢谢版主写得这么详细!

Reply View the author
arkui-x
deepin
2023-08-02 04:13
#33
The user is banned, and the content is hidden.
2 / 2
To page