编译所有依赖项并将其链接到 LLVM 位码
Compiling and linking all dependencies to LLVM bitcode
我有一个简单的 C 程序,它几乎是一个使用两个外部函数的 hello world 程序:printf 和 strcpy。该程序具有以下依赖项:
ldd app
linux-vdso.so.1 => (0x00007fff36cc4000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f4b81932000)
/lib64/ld-linux-x86-64.so.2 (0x00007f4b81d2a000)
我想将程序和所有依赖项编译为 LLVM 位码。如果我通过 clang -c -emit-llvm app.c
编译,它不会编译依赖项,如果我在没有 -c
的情况下编译,我会收到以下错误:-emit-llvm cannot be used when linking
如何将所有依赖项编译为 bitcode 和 link 所有内容,这样就不再有外部依赖项了?
How can I compile all dependencies to bitcode [..]
嗯,你需要编译它们。也就是说,您需要使用 clang 将依赖项 (glibc) 从其源代码(C 和程序集)编译为 llvm 位码。目前您正在链接已编译的代码(不能是 "uncompiled" / "converted to" LLVM 位码,至少不是以合适的方式)。
我有一个简单的 C 程序,它几乎是一个使用两个外部函数的 hello world 程序:printf 和 strcpy。该程序具有以下依赖项:
ldd app
linux-vdso.so.1 => (0x00007fff36cc4000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f4b81932000)
/lib64/ld-linux-x86-64.so.2 (0x00007f4b81d2a000)
我想将程序和所有依赖项编译为 LLVM 位码。如果我通过 clang -c -emit-llvm app.c
编译,它不会编译依赖项,如果我在没有 -c
的情况下编译,我会收到以下错误:-emit-llvm cannot be used when linking
如何将所有依赖项编译为 bitcode 和 link 所有内容,这样就不再有外部依赖项了?
How can I compile all dependencies to bitcode [..]
嗯,你需要编译它们。也就是说,您需要使用 clang 将依赖项 (glibc) 从其源代码(C 和程序集)编译为 llvm 位码。目前您正在链接已编译的代码(不能是 "uncompiled" / "converted to" LLVM 位码,至少不是以合适的方式)。