如何编译静态二进制文件



Ubuntu 12.04上的DMD 2.60。。。我想创建一个静态二进制文件,这样我就可以在一个旧的环境中运行它。dmd没有'static'标志。我尝试将"-static"标志与"dmd-L-static…"一起传递给链接器-获取错误消息

/usr/bin/ld: cannot find -lgcc_s

使用"gcc-static…"编译C代码效果良好。这是我想念的东西吗?谢谢

如果您使用dmd进行链接,由于它将链接器标志传递给链接器的方式,它目前不起作用。您需要使用-c构建所有内容来生成对象文件,然后使用gcc或ld手动链接这些文件。

不过我应该指出,一般来说,静态链接glibc被认为是个坏主意。在您的情况下,它可能非常有效,是正确的解决方案,但它肯定存在潜在的问题(但我不记得细节了)。所以,除非你真的需要,否则你可能不应该这么做。

最新更新