我想构建一个可以使用动态可加载插件的静态链接应用程序。
问题是我无法摆脱 libc.so
依赖项。
我正在使用musl libc
并编译如下
/opt/cross/x86_64-linux-musl/bin/x86_64-linux-musl-gcc -Wl,-E -fPIC -I... -static-libgcc -Wl,-Bstatic -ldl -lc -lgcc source.c -o output_bin foo.a bar.a -Wl,-Bdynamic
readelf -d
显示可执行文件依赖于 libc.so
,因此可执行文件无法在没有 musl libc
的其他计算机上运行。
是否可以将 libc 符号包含到 elf 可执行文件中并将所有外部插件链接到 elf 本身,而无需外部 .so
依赖项?如何实现这一目标?
最佳答案
也许您应该尝试使用 -nostdlib
参数在没有 stdlib 的情况下编译它。
关于c - 如何在保持动态加载的同时静态链接libc?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35530420/