如何编译静态二进制文件?

seg*_*ult 5 d

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

/usr/bin/ld: cannot find -lgcc_s
Run Code Online (Sandbox Code Playgroud)

使用"gcc -static ..."编译C代码工作正常.这是我想念的吗?谢谢 !

Jon*_*vis 3

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

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