如何使用clang生成完全静态的二进制文件?我使用了以下命令:
clang -flto <source files> -o <executable output> -fuse-ld=lld -static-libgcc -lc -Bstatic -m32
然而,生成的输出取决于某个.so
文件:
$ ldd <executable output file>
linux-gate.so.1 => (0xf77dd000)
libc.so.6 => /lib/libc.so.6 (0xf75f0000)
/lib/ld-linux.so.2 (0x5663b000)
The following answer尝试回答这个问题,但没有直接解决问题。
甚至可以生成完全独立的二进制文件吗?或者我是否应该使用除libgcc
以外的其他不同的C库实现?
如果是,那么如果我有源代码,如何将其与clang链接,例如newlib
?
答案 0 :(得分:0)
只需使用clang的-static标志对其进行编译。
根据您的情况,尝试:
clang -flto <source files> -o <executable output> -static -m32
我的测试程序的结果显示:
[root@interserver ogrerobot.com]# ldd ./CppUtilsSpikes
not a dynamic executable