与clang完全静态链接

时间:2018-03-19 17:07:32

标签: c gcc linker clang llvm

如何使用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

1 个答案:

答案 0 :(得分:0)

只需使用clang的-static标志对其进行编译。

根据您的情况,尝试:

clang -flto <source files> -o <executable output> -static -m32

我的测试程序的结果显示:

[root@interserver ogrerobot.com]# ldd ./CppUtilsSpikes  
not a dynamic executable