找回密码
 立即注册
搜索
查看: 3792|回复: 17

[软件] Ubuntu,我有一个软件,只有源码,没有二进制包

[复制链接]
     
发表于 2022-9-5 23:09 来自手机 | 显示全部楼层 |阅读模式
需要在内网用。我在外网安装好dev的依赖包,然后编译,编译完成之后在内网还是没法用。难道连依赖包也得是源码编译才行?
回复

使用道具 举报

发表于 2022-9-5 23:13 | 显示全部楼层
内网没装依赖
回复

使用道具 举报

     
发表于 2022-9-5 23:26 | 显示全部楼层
根据控制变量法, 这就是网络的区别吧(

For real: 用 `ldd <编译好的二进制文件>` 看一下缺什么动态链接库文件, 然后再对应地装依赖试试
回复

使用道具 举报

     
发表于 2022-9-5 23:30 来自手机 | 显示全部楼层
依赖包,动态链接库,处理器架构,glibc版本,都看看?
回复

使用道具 举报

     
发表于 2022-9-5 23:30 | 显示全部楼层
试试弄个静态编译的版本,大不了二进制文件大小起飞
回复

使用道具 举报

头像被屏蔽
     
发表于 2022-9-6 10:42 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

     
发表于 2022-9-7 08:48 来自手机 | 显示全部楼层
本帖最后由 香港记者巴拉森 于 2022-9-7 08:50 编辑

依赖包的文件不在你内网的环境变量里?

—— 来自 Xiaomi M2007J17C, Android 10上的 S1Next-鹅版 v2.5.4
回复

使用道具 举报

     
发表于 2022-9-7 10:41 | 显示全部楼层
外网环境编好后构建成容器,然后拷贝到内网用?
回复

使用道具 举报

     
发表于 2022-9-7 10:42 | 显示全部楼层
&#x5982;&#x679C;&#x5185;&#x7F51;Ubuntu&#x7684;glibc&#x7248;&#x672C;&#x6BD4;&#x5916;&#x7F51;&#x7684;&#x4F4E;&#xFF0C;&#x6700;&#x597D;&#x662F;&#x9759;&#x6001;&#x94FE;&#x63A5;
glibc&#x4E0D;&#x80FD;&#x9759;&#x6001;&#x94FE;&#x63A5;&#xFF0C;&#x8981;&#x5B8C;&#x5168;&#x9759;&#x6001;&#x94FE;&#x63A5;&#x5F97;&#x7528;musl libc&#x4E4B;&#x7C7B;&#x7684;&#x624D;&#x884C;&#xFF0C;&#x53EF;&#x4EE5;&#x76F4;&#x63A5;&#x4ECE; https://musl.cc/ &#x4E0B;&#x5DE5;&#x5177;&#x94FE;&#xFF0C;&#x5E26;gcc&#xFF0C;&#x4E5F;&#x53EF;&#x4EE5;&#x76F4;&#x63A5;&#x7528;clang&#xFF0C;&#x4E0D;&#x8FC7;&#x9700;&#x8981;&#x8BBE;&#x7F6E;--sysroot&#x548C;--gcc-toolchain
&#x5982;&#x679C;&#x6CA1;&#x6CD5;&#x7528;musl libc&#xFF0C;&#x53EF;&#x4EE5;&#x628A;&#x5185;&#x7F51;&#x7684;/usr/include&#x8FD8;&#x6709;&#x5E93;&#x62F7;&#x51FA;&#x6765;&#xFF0C;&#x7136;&#x540E;&#x7F16;&#x8BD1;&#x7684;&#x65F6;&#x5019;&#x8BBE;&#x7F6E;--sysroot

&#x5176;&#x4ED6;&#x4F9D;&#x8D56;&#x6700;&#x597D;&#x662F;&#x9759;&#x6001;&#x94FE;&#x63A5;&#xFF0C;&#x4E0D;&#x80FD;&#x7684;&#x8BDD;&#x9700;&#x8981;&#x5185;&#x7F51;&#x673A;&#x5668;&#x4E0A;&#x4E5F;&#x6709;&#xFF0C;&#x53EF;&#x4EE5;&#x76F4;&#x63A5;&#x5B89;&#x88C5;&#xFF0C;&#x4E5F;&#x53EF;&#x4EE5;&#x548C;&#x53EF;&#x6267;&#x884C;&#x6587;&#x4EF6;&#x653E;&#x5728;&#x4E00;&#x8D77;(&#x4F46;&#x9ED8;&#x8BA4;&#x662F;&#x7EDD;&#x5BF9;&#x8DEF;&#x5F84;&#xFF0C;&#x6539;&#x4E3A;&#x76F8;&#x5BF9;&#x8DEF;&#x5F84;&#x9700;&#x8981;&#x94FE;&#x63A5;&#x7684;&#x65F6;&#x5019;&#x8BBE;&#x7F6E;&#x94FE;&#x63A5;flag -rpath $ORIGIN&#xFF0C;&#x6CE8;&#x610F;&#x5199;&#x6CD5;&#x548C;&#x8F6C;&#x4E49;&#xFF0C;&#x6216;&#x8005;&#x94FE;&#x63A5;&#x4E4B;&#x540E;&#x4F7F;&#x7528;patchelf&#x6765;hack&#x4E00;&#x4E0B;)&#xFF0C;&#x53EF;&#x4EE5;&#x901A;&#x8FC7;ldd&#x6765;&#x6D4B;&#x8BD5;
回复

使用道具 举报

头像被屏蔽
     
发表于 2022-9-7 11:00 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

     
发表于 2022-9-7 14:22 | 显示全部楼层
whzfjk 发表于 2022-9-7 11:00
拖家带口自备依赖链甚至自编 C 库本质上是在重复 docker 干的是吧(

其实docker是邪道,你看Windows从来不需要这样解决依赖问题
容器本来是做隔离的,现在有多少docker是用来做隔离呢?

另外docker解决不了这个问题,docker的guest和host共享内核,如果guest中的程序依赖的操作系统调用在host的内核中没有实现,就会出错。因此通常要求docker运行时的host的内核版本号要大于等于docker里面的程序假设的内核版本号

评分

参与人数 1战斗力 +1 收起 理由
营业收入 + 1 好评加鹅

查看全部评分

回复

使用道具 举报

     
发表于 2022-9-7 14:26 | 显示全部楼层
打包成snap有没有搞头
回复

使用道具 举报

头像被屏蔽
     
发表于 2022-9-7 21:48 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

     
发表于 2022-9-7 22:17 | 显示全部楼层
whzfjk 发表于 2022-9-7 21:48
windows 不是系统包袱很大,同时第三方程序都拖家带口把 dll 带全了么
遇到缺 vc++ redistributable 和特 ...

拖家带口这问题不大啊,又占不了多少空间
缺vc++ resdistributable那是因为应用没自己带
.Net Framework那是另外一个问题了,不过.Net Framework兼容性还是挺好的,总共不兼容的也就三代吧(.Net 1.0-1.1, 2.0-3.5, 4.0-4.8),一般后面两个都装就没问题了
回复

使用道具 举报

     
发表于 2022-9-8 09:57 | 显示全部楼层
r_ex 发表于 2022-9-7 14:22
其实docker是邪道,你看Windows从来不需要这样解决依赖问题
容器本来是做隔离的,现在有多少docker是用来 ...

都有源码了,按内网机子的内核版本制作一个docker镜像不是更简单?
有些程序想改成全静态链接还真不算好弄,特别是内核版本不同的情况下
回复

使用道具 举报

     
发表于 2022-9-8 11:15 | 显示全部楼层
mp5 发表于 2022-9-8 09:57
都有源码了,按内网机子的内核版本制作一个docker镜像不是更简单?
有些程序想改成全静态链接还真不算好 ...

直接装个和内网机器一样版本的系统编译,或者做成sysroot用来编译,依赖的deb或者rpm什么的也拷贝到内网机器,感觉更简单
静态编译主要是有很多机器都不知道是什么版本的时候方便一点,当然有时候没法这么搞,比如说依赖X11什么的,或者依赖系统locale、NSS之类的,需要能被hook的时候
回复

使用道具 举报

     
发表于 2022-9-8 11:48 来自手机 | 显示全部楼层
用static build

—— 来自 samsung SM-N9860, Android 12上的 S1Next-鹅版 v2.5.2-play
回复

使用道具 举报

     
发表于 2022-9-8 13:17 来自手机 | 显示全部楼层
你开发机和内网机版本一致吗,我之前遇到类似的问题是内网机ubuntu18,开发机ubuntu14,18里废弃了几个lib,另外很多软连接的东西不不确认就直接用zip打包的话,软连接也会失效
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|上海互联网违法和不良信息举报中心|网上有害信息举报专区|962110 反电信诈骗|举报电话 021-62035905|Stage1st ( 沪ICP备13020230号-1|沪公网安备 31010702007642号 )

GMT+8, 2024-11-13 21:54 , Processed in 0.092637 second(s), 6 queries , Gzip On, Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表