不懂就问:其他电脑编译好的二进制文件可以直接到其他机器使用吗?
那么,我可以在其他电脑将二进制文件编译好,然后再通过网盘工具或者其他下载工具,将其下载到本地电脑直接使用吗?
比如我有一台香港的 ubuntu 服务器,编译安装好了一个软件,然后将其打包,我本地有一台电脑,直接将软件下载到本地,然后解压缩直接使用。可以这样吗
比如我有一台香港的 ubuntu 服务器,编译安装好了一个软件,然后将其打包,我本地有一台电脑,直接将软件下载到本地,然后解压缩直接使用。可以这样吗
1. 两台机器的操作系统、CPU 指令集一致,这样能保证可执行文件的结构以及相应的指令集符合目标机器的要求
2. 如果不符合上一个条件,可以使用交叉编译
同 cpu 架构 + 不同操作系统:可以交叉编译。
同 cpu 架构 + 同操作系统 + 不同发行版:需要注意运行库版本的问题,方法也挺多的,比如静态编译,或者暴力点,用 ldd 等工具把依赖的 so 文件一起拷走。
同 cpu 加构 + 同操作系统发行版:最简单了,记好安装了哪些包,这边对应着装上就好,建议打包成 deb/rpm 等该发行版的包,更好安装和管理。
2. 相同架构下,注意链接的动态库不能丢
否则至少需要静态编译,或者把依赖的库版本一起复制过来。如果编译环境太新,运行环境太久,还要涉及到内核兼容性还有 libc 兼容性等等,出问题概率很大。
这就和 Windows 上的软件一样,你编译完的 exe 也不是拷出来就能用的,一样需要备齐 dll 依赖。然后新的软件老的系统可能跑不起来。
网络问题可以尝试用代理解决,或者使用镜像源。
服务型软件可以考虑用容器方案,可以在各个地方使用极度相同的环境。