如何将Ubuntu编译的程序部署到Manjaro机器运行?
可以把Ubuntu上编译好的程序部署到Manjaro上运行,Docker确实是最稳妥的跨发行版运行方案,下面给你极简的操作步骤,不需要复杂配置:
方案一:极简Docker部署流程
- 在Ubuntu机器上,创建一个名为
Dockerfile的文件,内容仅需两行(注意替换成你实际的程序信息):
FROM ubuntu:22.04 # 建议使用你编译程序时的Ubuntu具体版本,避免库版本差异 COPY myapp /usr/local/bin/ CMD ["/usr/local/bin/myapp"]- 在Ubuntu机器上,创建一个名为
- 在Ubuntu上构建Docker镜像(假设程序名为
myapp):
docker build -t myapp-ubuntu .- 在Ubuntu上构建Docker镜像(假设程序名为
- 将镜像导出为可传输的压缩文件:
docker save -o myapp-ubuntu.tar myapp-ubuntu- 把
myapp-ubuntu.tar文件传到Manjaro机器上,然后加载镜像:
docker load -i myapp-ubuntu.tar- 把
- 直接运行程序容器:
如果程序需要访问宿主机的文件或端口,添加对应参数即可:docker run --rm myapp-ubuntu- 挂载宿主机目录:
docker run --rm -v /path/on/manjaro:/path/in/container myapp-ubuntu - 映射端口:
docker run --rm -p 8080:80 myapp-ubuntu
方案二:静态编译(无需Docker的替代方案)
如果你的程序支持静态编译,直接在Ubuntu上生成静态二进制文件,就能直接拷贝到Manjaro运行:
- 编译时添加静态链接参数(以GCC为例):
gcc -static -o myapp myapp.c - 编译完成后,用
file myapp命令验证,输出包含statically linked即可直接在Manjaro上执行。
注意事项
- 使用Docker时,务必匹配编译程序的Ubuntu版本,避免因系统库版本不一致导致程序运行失败。
- 静态编译可能受限于依赖库的支持情况(部分动态库没有对应的静态版本),此时Docker仍是更可靠的选择。
内容的提问来源于stack exchange,提问作者user2820579
相关产品推荐
相关产品推荐

