如何使用gcc4将静态库(archives)链接到空动态库

时间:2010-06-08 05:43:36

标签: linux gcc4

祝福所有人!

我在linux上使用gcc来创建一个共享库。该库本身没有代码,但链接到也使用gcc构建的几个静态库(存档)。我需要通过我的共享库导出静态库的符号。结果是,生成的共享库太小,实际上不包含上面提到的静态库提供的任何符号。我也尝试使用导出符号的地图,但这根本没用。你们中的任何人都可以提出解决方案!

提前10倍

1 个答案:

答案 0 :(得分:3)

您需要链接器的--whole-archive选项来提取所有静态存档:

gcc -shared -o libwhatever.so -Wl,--whole-archive -lstatic -Wl,--no-whole-archive

需要-Wl因为--whole-archive是链接器选项。

为了做到这一点,libstatic.a中的代码需要正确编译才能在共享对象中使用(即在需要的平台上使用-fpic)。

相关问题