soh*_*ham 5 c linker gcc llvm clang
如何使用 clang 生成完全静态的二进制文件?我使用了以下命令:
clang -flto <source files> -o <executable output> -fuse-ld=lld -static-libgcc -lc -Bstatic -m32
Run Code Online (Sandbox Code Playgroud)
然而,生成的输出取决于某个.so文件:
$ ldd <executable output file>
linux-gate.so.1 => (0xf77dd000)
libc.so.6 => /lib/libc.so.6 (0xf75f0000)
/lib/ld-linux.so.2 (0x5663b000)
Run Code Online (Sandbox Code Playgroud)
以下答案试图回答问题,但并没有直接解决问题。
是否有可能生成完全独立的二进制文件?或者我应该求助于使用除 之外的其他不同的 C 库实现libgcc?
如果是,那么如果我有源代码,例如,如何将其与 clang 链接newlib?
只需使用 clang 的 -static 标志编译它即可。
根据您的情况,请尝试:
clang -flto <source files> -o <executable output> -static -m32
Run Code Online (Sandbox Code Playgroud)
我的测试程序的结果显示:
[root@interserver ogrerobot.com]# ldd ./CppUtilsSpikes
not a dynamic executable
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14459 次 |
| 最近记录: |