静态链接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 。