Ubuntu 17.10上使用crosstool-ng-1.23.0建立WD MyCloud修复工具编译环境(uClibc)

参考更优雅的(不拆硬盘)拯救死翘翘了的WD MyCloud(Ubuntu 17.10)编译出来的Busybox是只有3MB大小的样子,这样编译出来的东西非常基础,功能有限。如果想要增加其他软件的时候,最少改动的情况下,一般都依赖GLIBC,而GLIBC完整编译出来的库接近50MB,而我们修复系统,是一个纯内存文件系统。直接采用GLIBC会非常浪费不多的内存空间。

因此在低内存的系统上采用uClibc,变成一个不错的选择。下面我们讲一下如何通过crosstool-ng-1.23.0构建一个我们需要的编译系统出来。

首先编译crosstool-ng-1.23.0源代码

如果下载crosstool-ng源代码存在问题,可以从本站下载一份代码拷贝。点击此处下载

最终的.config文件,可以参考下面的配置信息,或者简单的拷贝这个文件到编译目录即可

最终在如下目录生成我们需要的编译程序

编译过程中的源代码下载可能会非常缓慢,可以从本站下载一份代码的拷贝。点击这里下载。下载完成后,解压缩到当前用户根目录,编译的时候,会自动使用已经下载的文件。可以使用下面的命令进行下载解压缩操作:

如果懒得编译,也可点击这里下载一份已经编译好的编译工具

参考链接


发布者

《Ubuntu 17.10上使用crosstool-ng-1.23.0建立WD MyCloud修复工具编译环境(uClibc)》上有2条评论

  1. 博主,想请教一个问题。我按照你的流程创建了针对WDMyCloud Gen2的toolchain,这个机器的cpu是Marvell Armada 375,cotex a9 armv7-a,因此我稍微修改了一下.config,我的config传到https://github.com/machsix/WDMyCloud-Gen2/blob/master/toolchain/.config了。toolchain成功编译出来后,我先静态编译了c和c++的helloword,传到wdmycloud上也都正确运行了。然后我就照着别人的脚本写了个编译aria2的。环境变量设置在这里https://github.com/machsix/WDMyCloud-Gen2/blob/master/toolchain/source.sh,编译的脚本在这里https://github.com/machsix/WDMyCloud-Gen2/blob/master/compile_aria_mach6.sh。用的lib有expat+zlib+openssl+sqlite3+libssh2, 我在本机上成功编译出来了,但是这次传到wd上就提示segmentation fault。请问您觉得能是什么原因造成的?多谢

    1. 这种情况一般是由于链接的动态库导致的,如果只编译helloword能正常运行,那么说明glibc这部分是适合的,但是其他的很难说是哪个库导致的问题,如果有条件建议编译调试版本,并使用gdb调试一下。另外,建议查看系统日志,一般系统会记录应用崩溃信息的

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注