关于 Linux 编译生成可执行文件后打包移植的问题

2022-11-03 15:54:11 +08:00
 yang3121099

各位大哥好,我是大数据和人工智能方向研一在读,项目要用到一个 Github 工具进行数据预处理,应该是和 C 语言编译相关的,了解不多,想请教各位大哥

问题是这样的

github 下载以后需要编译生成可执行文件,目前也可以正常使用,但是我需要把它移植到另一个服务器上,新的服务器是学校提供的华为云,并没有 sudo 权限,很多 apt-get 命令应该无法安装,所以想请教一下这种情况下是否有办法打包封装移植呢,就像 Windows 下面 c 语言生成 exe 文件这种拿走就用

我搜索了一些网页但是没有这方面的介绍,我猜测是必须在每一个新的环境里面配置后重新编译生成才行吗,否则 github 直接给一个可执行的包不就行了哈哈哈

但是也感觉如果变成一个二进制文件,是否能脱离依赖进行运行呢?那如果不行的话,有没有绕过 sudo 权限的方法啊,我看华为云有一个自定义镜像绕过 apt-get的方法,但是也不知道行不行,没有实际部署的经验,特来请教,谢谢各位大哥

参考的链接如下:Github

2653 次点击
所在节点    Linux
29 条回复
adoal
2022-11-03 20:01:33 +08:00
如果是为学校做的工作,或者课业要求,那跟学校里负责这事的人提出你的合理诉求。
如果不是……那为啥要安装到你没有 root 权限的属于学校的服务器上。
yanqiyu
2022-11-03 21:15:19 +08:00
@kenvix podman 这类 root 容器本身也不需要 suid helper 所以用户权限就能跑起来?虽然还是要有 root 才能 assign 的 subgid/subgid range
tomychen
2022-11-03 21:24:09 +08:00
可能比较适用的就是 musl + full static 编译了

但是,即便这样了,可能还会遇到平台不一样的问题 arm/x86/x86_64

主要还得看代码里是不是完全能用 musl 代替
FrankHB
2022-11-03 21:34:55 +08:00
又不是没源码,直接本地重新编译链接会死?
还是说服务器连 gcc 这种都没有?
会死的话投诉服务器管理员,丫个生产环境都残的。
weidaizi
2022-11-03 22:08:21 +08:00
@julyclyde 👍 你说的对!我刚刚的回答不严谨
Inn0Vat10n
2022-11-03 22:26:48 +08:00
补充一个,编译时最好带上目标机器的 cpu 指令集 flag ,不然全静态编译还是可能会挂掉
chai2010
2022-11-04 10:16:38 +08:00
以前 windows 用户有个 DLL 地狱的说法。想避免动态库依赖地狱就尽量全静态编译。
cattyhouse
2022-11-04 17:33:27 +08:00
cattyhouse
2022-11-04 17:34:36 +08:00

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/892392

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX