glibc链接会导致较小的二进制文件被破坏

时间:2016-11-21 09:55:37

标签: gcc makefile cmake ubuntu-16.04

我正在尝试将Ubuntu 16.04上的程序(例如zbackup)编译成可以在BusyBox Linux上运行的单个胖二进制文件。使用自定义的CMAKE脚本,我使用以下选项进行链接,这些选项似乎使二进制文件增长到4MB +。这没关系,似乎事情正被推到二进制文件中。

  -lcrypto
  -lz
  -ldl
  -static-libstdc++
  -static-libgcc

接下来我尝试添加-static标志,以便我可以包含缺少的最后一块,但是当我添加-static选项然后再次构建时,二进制文件实际上更小,大约2MB +它被打破。当我尝试运行二进制文件时,它只是说file or folder not found

我似乎无法确定-static选项导致输出二进制文件被破坏的原因。

1 个答案:

答案 0 :(得分:1)

来自gcc手册页:

  

-static在支持动态链接的系统上,这会阻止与共享库的链接。在其他系统上,此选项没有   效果。

因此,它阻止了与某些共享库的链接,这就是打破你的东西,也可能是什么让它变得更小。可能它没有链接到加密库等。再次使用objdump -t之前和之后,找出哪些符号正在消失。