linux软件通用吗?Linux是什么软件

同一个软件在不同的Linux系统下是否能使用

linux上有很多软件都是提供的二进制可执行文件

也就是说已经编译好的文件

所以一般情况下是可以在其它发行版下使用的

不过这得看具体情况

比如软件是64位的而你的发行版却是32位的话就无法执行了

或者cpu架构不同

比如你的软件是arm架构的而你的发行版却是x86的

那么同样也是无法运行的

linux下也像windows下一样

linux下的软件并不完全都是提供的源代码的

linux下同样也有提供编译好的二进制可执行文件的软件

比如firefox就是一个例子

firefox就有提供编译好的二进制可执行文件

下载完成后直接解压就可以运行(当然要看准32位还是64位以及cpu架构)

而与是哪个linux的发行版没有关系

像搜狐输入法的linux版在各大发行版里也都是可用的

linux下不同发行版编译的软件可以通用吗

只要有相应的库,那么就没有问题。不同发行版的库应该还是一样的缺少相应的库就把相应的库安装好就能运行了,这也是为什么安装软件的时候总是要附带的安装几个库。最稳妥的办法就是把用到的不是系统基本库的库打包,里面写个安装脚本探测如果有linux下不同发行版编译的软件可以通用吗

请问运行于不同CPU构架的linux,它们的软件可以通用吗

以上回答中jiangtao9999的比较靠谱儿。

是这样:

1、Linux下的软件几乎都是c语言的;

2、如果你学过C语言,找找书应该有这样一个概念:ANSI C,这个是一个C语言的标准,比如printf这个函数就属于标准库(也就是符合ANSI标准的)函数

3、假如你编写了一个软件,代码中仅仅包含ANSI的库函数,那么没有问题,只要是支持C语言的平台,都能正常运行,即:编写了一个简简单单的helloworld到哪里编译运行都没有问题。

【前提是:】编译再运行,不编译就运行是不可以的,比如printf函数在各种架构上的实现方式是不可能相同的,所以需要在arm的编译器上再编译一遍才可以。否则运行不了。

有的软件平台可以不用编译,直接运行,比如jiangtao9999说的java、Python什么的,Java可以实现“一次编译,满哪运行”什么的,而Python则是有了.py源代码就可以无敌了,使用的时候不用你去执行编译命令,直接执行即可。arm上实现这两种语言都是很容易的——下载源代码、编译、安装即可。

4、不同架构的Linux平台都要实现一个编译器,这是很重要的,有了编译器,才可以从源代码安装软件。

5、使用非ANSI库中的函数需要该Linux包含这个函数的实现,否则,编译后的连接将不通过,比如一个软件使用了GTK来实现图形用户界面,那么就需要系统中包含了gtk的库函数,这就叫依赖,安装软件,首先要解决依赖,依赖有时候解决起来很麻烦,所以软件开发过程中尽量减少依赖,这样方便安装。

6、tar.gz这种格式的软件包有可能是源代码,有可能是可执行文件(这是因为那只是一个压缩包,内容是什么不一定),这两者不同。很多软件以tar.gz格式发布源代码,而qq的Linux版本属于可执行文件,在几乎所有Linux平台下面直接双击或者通过命令就可以使用。

7、如果你使用的是rpm包或者deb包或者是tar.gz文件包中可执行文件形式的软件包,而不是tar.gz这种形式的源代码,你需要使用相应的软件包管理器安装就行,

但这不意味着arm版本的deb和x86版本的deb文件是通用的,你能这样用是因为所有的使用x86机器的软件经过编译或者交叉编译(在arm平台上编译x86平台上的软件就叫交叉编译)以后,运行于几乎完全一样的统一的平台上,实现软件和系统的无缝对接,方便了用户——一方面可以不用浪费编译的时间,主要还是方便了那些不会编译软件的人。

8、我也正在学习Linux,所以很多地方不太对,这只是我现在的一些理解。jiangtao9999说的主要是和汇编有关,如果代码的实现主要是在c语言水平,那么就会由编译器屏蔽掉指令集和寄存器什么的。

9、要是在百度回答的答案能改改就好了,这样错误就会少一点。

10、重新罗嗦一遍:

1在不重新编译源代码的情况下,x86下linux的软件不可以运行于arm构架的Linux,即使运行也会奇卡。

2和在编译是否时为X86的CPU构架优化了编译无关。(把我问迷糊了,估计是无关)

3软件在编译时是否为X86的CPU构架而优化主要看作者了,资料可以参看

4和不同的安装包格式有一定关系

5tar.gz格式的软件包不能保证在不同架构的Linux都能运行

6在arm的linux安装时解决依赖以后,乳沟编译通过基本是没什么问题的

7不是所有源代码在arm和x86下编译一下就可以了,还需要做一些努力

8有源代码可以对遇到的不通过的问题逐一解决,理论上可以实现所有软件都能运行

9重新编译过程中如果遇到依赖问题需要逐一解决

阅读剩余
THE END