15

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

2 回答 2

11

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

于 2012-11-02T00:32:12.583 回答
8

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

如果您的目标是静态链接 libc 而动态链接 libpthread,那么这根本行不通。您不能混合和匹配不同版本的 libpthread;它是 glibc 的一部分,只是一个单独的文件,内部需要匹配。即使使用相同的版本,我认为静态链接 libc 和动态链接 libpthread 也会很糟糕。

如果 glibc 对您的需要来说太大了,您可以尝试使用替代 libc,例如uClibcmusl

于 2012-11-02T00:29:13.623 回答