静态链接glibc但其他一些库与GCC动态链接

时间:2012-11-02 00:20:02

标签: c linker glibc static-linking

我需要将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

2 个答案:

答案 0 :(得分:13)

如果可以提供-static-libgcc

答案 1 :(得分:8)

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

如果您的目标是静态链接libc但动态链接libpthread,这根本不起作用。你不能混合和匹配不同版本的libpthread;它是glibc的一部分,只是一个单独的文件,内部需要匹配。即使使用相同的版本,我认为动态链接libc和libpthread也会非常破碎。

如果glibc太大而无法满足您的需求,您可以尝试使用其他libc,例如uClibcmusl