1
tankb52 2016-04-01 09:25:39 +08:00
你这样看, Flyme 和 MiUI 都可以跑同一个 apk 啊。
|
2
hei1000 2016-04-01 09:32:55 +08:00
"不通内核版本的 linux 应该不通用", 那要看是否调用了不通内核版本之间的差异化接口
|
3
zeus255 2016-04-01 09:37:45 +08:00 1
1 、 ABI 相同。 2 、所有的依赖库都能做到前向兼容。
一般来说符合这两个条件即可。 |
4
liyvhg 2016-04-01 09:58:29 +08:00
openwrt 的 ipk 在编译生成的时候可以设置依赖, 依赖分为硬件依赖和软件依赖.
说人话: 只要是相同或相近 CPU 的产品, 在刷了 openwrt 之后, ipk 大多能通用. 例如大量的 MT7620n 和 MT7620a 路由器 少数 ipk 安装的时候提示不兼容, 大多是软件依赖中的内核依赖不满足, 可以手动解压缩提取出 bin 文件也能跑起来. |
5
RqPS6rhmP3Nyn3Tm 2016-04-01 10:04:39 +08:00
如果我记得没错, API, ABI, CPU 架构兼容就可以。
|
6
BOYPT 2016-04-01 10:31:24 +08:00
程序跟内核没什么关系,绝大多数程序不会去直接和内核打交道;即使有和内核通信,也已经是几十年不变的标准接口。只要程序的 CPU 架构兼容,依赖的运行库兼容就可以跑。
|
7
bramblex 2016-04-01 11:16:33 +08:00
依赖库的版本不同,甚至命名不同都有可能导致程序不能跑……
linux 下面二进制包的发行问题已经被诟病不是一天两天了…… 建议静态编译…… |
8
PerNet OP |
9
nicevar 2016-04-01 12:03:40 +08:00
linux 的依赖搞死几代人了
|
10
PerNet OP |
11
RqPS6rhmP3Nyn3Tm 2016-04-01 12:10:20 +08:00
@PerNet 抱歉我并不了解,但是我记得之前看过书是这么说的。
|
12
PerNet OP 帖子不能编辑了。我想问下,如果我安装三个个 liunx ,同样的硬件。就内核版本不一样。 3.x 4.x 5.x 。我在 3.x 下编译了一个软件,如 unzip 。我把编译好的二进制文件放到同样硬件不同 liunx 内核(如 4.x 5.x )的电脑还可以执行吗?突然想到还没时间做测试。哪位大神知道帮忙解答下!
|
16
BOYPT 2016-04-01 13:09:44 +08:00
@PerNet 那要看你编译时候的参数是否能兼容你的 3 个 linux 。类似的情况你可以参考 java 的二进制 jre/jdk 包、 mysql 的二进制包,他们都是 linux 下的“绿色软件”,只要架构兼容既可以解压运行。
|
17
3dwelcome 2016-04-01 13:11:53 +08:00
"帖子可以加附言", 加附言好贵的,还不如留言呢。
一般而言,都是可以兼容的,只要你依赖库 so 不要太特殊。我都是 cygwin 下编译成 elf, 然后直接 SSH 扔到服务器上运行,类似 unzip 这种算法,一点问题也没有。 |
18
Khlieb 2016-04-01 16:39:05 +08:00
这要看官方发行时候的说明
|
19
Neveroldmilk 2016-04-01 16:52:18 +08:00
No ,除非作死。
|
21
ujmxyd 2016-04-01 20:20:55 +08:00 via iPhone
|
22
flynaj 2016-04-02 18:49:47 +08:00 via Android
abi 相同,依赖库都有就可以了, abi 相同简单,依赖库就是大问题了,跟 windows 下的 DLL 一样,世界老大难问题
|
23
googlebot 2016-04-02 23:20:27 +08:00 via Android
争取静态编译,减少依赖,
|