我正在尝试将Ubuntu 16.04上的程序(例如zbackup)编译成可以在BusyBox Linux上运行的单个胖二进制文件。使用自定义的CMAKE脚本,我使用以下选项进行链接,这些选项似乎使二进制文件增长到4MB +。这没关系,似乎事情正被推到二进制文件中。
-lcrypto
-lz
-ldl
-static-libstdc++
-static-libgcc
接下来我尝试添加-static
标志,以便我可以包含缺少的最后一块,但是当我添加-static
选项然后再次构建时,二进制文件实际上更小,大约2MB +它被打破。当我尝试运行二进制文件时,它只是说file or folder not found
我似乎无法确定-static
选项导致输出二进制文件被破坏的原因。
答案 0 :(得分:1)
来自gcc手册页:
-static在支持动态链接的系统上,这会阻止与共享库的链接。在其他系统上,此选项没有 效果。
因此,它阻止了与某些共享库的链接,这就是打破你的东西,也可能是什么让它变得更小。可能它没有链接到加密库等。再次使用objdump -t
之前和之后,找出哪些符号正在消失。