链接glibc的静态,但其他一些与GCC动态库(Link glibc statically but

2019-07-03 12:09发布

我需要静态链接glibc的到我的项目,因为该目标平台只支持一个很旧的(但它与静态链接glibc的工作从我的工具链,我已经检查了它)

不幸的是,这个应用程序必须使用并行线程库,但静态链接的libpthread需要太多的空间。

我想静态链接glibc的,而动态并行线程。

运行这个命令之后

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

我得到:

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

Answer 1:

有一个-static-libgcc ,如果可以帮助



Answer 2:

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

如果你的目标是静态链接libc的,但动态的libpthread,这根本是行不通的。 你不能混合和匹配不同版本的libpthread的; 这是glibc的,只是一个单独的文件的一部分,而内部需要匹配。 即使是同一个版本,我想静态链接libc和动态的libpthread会很破。

如果glibc的太大了你的需求,你可以尝试一个备用的libc像uClibc的或MUSL 。



文章来源: Link glibc statically but some other library dynamically with GCC