为什么手动编译后的 MongoDB 比官方提供的(包管理器下载)二进制版文件大这么多?

2020 年 1 月 4 日
 lvhuiyang

公司提供的开发机是没有 root 权限的,所以考虑用手动编译的方式来装个软件。在弄 MongoDB 的时候发现编译后的文件巨大,按照之前经验来说包管理器下载的二进制文件也就是几十 M 吧。有没有老哥了解手动编译后的二进制文件跟官方提供的二进制文件差异在哪?或者是有什么关键字我去 Google 搜一下。

total 3.1G
-rwxr-xr-x 1 lvhuiyang lvhuiyang 903M Jan  4 18:15 mongo
-rwxr-xr-x 1 lvhuiyang lvhuiyang 2.2G Jan  4 18:30 mongod
5448 次点击
所在节点    Linux
18 条回复
zhuangzhuang1988
2020 年 1 月 4 日
是不是编译的 debug 版本?
hwenwur
2020 年 1 月 4 日
可能是没 strip 吧,关键词 linux strip
lolizeppelin
2020 年 1 月 4 日
开发就喜欢瞎几把编译
tinkerer
2020 年 1 月 4 日
这么大也不像是 debug 版的大小啊,静态链接了?
katsusan
2020 年 1 月 4 日
linux 下用 readelf,其次就是看编译的时候有没有指定参数比如"-g"这种。
lvhuiyang
2020 年 1 月 4 日
@zhuangzhuang1988 @tinkerer

我是根据 Wiki https://github.com/mongodb/mongo/wiki/Build-Mongodb-From-Source

buildscripts/scons.py mongod mongo

上述命令编译的,Wiki 好像没有 debug 相关的说明,感谢回复,我再看下。
lvhuiyang
2020 年 1 月 4 日
@hwenwur @katsusan 感谢回复,我去查下相关的关键词
lvhuiyang
2020 年 1 月 4 日
@lolizeppelin 老哥消消火,确实对编译这块不熟悉,这不是正在学习么 = =
CEBBCAT
2020 年 1 月 4 日
楼主说的几十兆是 apt install 时提示的几十兆吗?那个提示的好像是下载体积
expy
2020 年 1 月 4 日
可以看看发行版的打包脚本,里面有编译参数。
lvhuiyang
2020 年 1 月 4 日
@CEBBCAT 感谢回复,是类似 apt install 时提示的的文件大小,这个应该是(可能压缩过的)下载体积,确实不能把这个跟最终执行的二进制的相比较。
lvhuiyang
2020 年 1 月 4 日
@expy 感谢回复,居然还有这种信息,去查下。
lihongjie0209
2020 年 1 月 4 日
mikeguan
2020 年 1 月 5 日
很明显没有去掉调试信息啊,一二楼都指明问题了,为啥后面还有疑惑呢?
有没有调试信息 file path_to_file_name 看下如果是 no strip 就代表包含调试信息,直接 strip path_to_file_name 去掉调试信息
ipwx
2020 年 1 月 5 日
编译安装是无计可施的最后一个选项。老哥你这么着急上这招么。。。
lwp2070809
2020 年 1 月 5 日
让你们运维安装 docker,把你添加进 docker 组,用 docker 安装 MongoDB
hiyang
2020 年 8 月 3 日
我编译的 4.2.6,情况和你一样,使用 strip 后恢复正常体积

编译时可以通过什么参数直接去掉调试信息吗
lvhuiyang
2020 年 8 月 3 日
@hiyang 这个不是很清楚 ...

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

https://v2ex.ih06.com/t/635085

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

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

© 2021 V2EX