C-静态链接GLIBC,但与GCC动态其他库



我需要静态地将glibc链接到我的项目,因为目标平台仅支持一个非常旧的(但是它可以与我的工具链中的静态链接的glibc一起使用,我已经对其进行了检查)

不幸的是,此应用程序必须利用Pthread库,但是静态链接的libpthread需要太多空间。

我想静态地链接glibc,并动态pthread。

运行此命令

powerpc-unknown-linux-gnu-gcc object_files -lrt -lpthread -Wl,-Bstatic -lc 

我得到:

/powerpc-unknown-linux-gnu/bin/ld: cannot find -lgcc_s

有一个-static-libgcc,如果可能会有所帮助

您应该使用-static,而不是-Wl,-static。后者绕过GCC的知识,因此GCC仍在尝试链接共享libgcc_s.so而不是静态libgcc_eh.a

如果您的目标是静态链接libc,却动态地链接了libpthread,则根本无法正常工作。您不能混合并匹配不同版本的libpthread;它是GLIBC的一部分,只是一个单独的文件,内部设备需要匹配。即使使用相同的版本,我认为在静态上链接libc和libpthread会被动态链接。

如果GLIBC太大满足您的需求,您可以尝试替代libc,例如uclibc或musl。

最新更新