祝福所有人!
我在linux上使用gcc来创建一个共享库。该库本身没有代码,但链接到也使用gcc构建的几个静态库(存档)。我需要通过我的共享库导出静态库的符号。结果是,生成的共享库太小,实际上不包含上面提到的静态库提供的任何符号。我也尝试使用导出符号的地图,但这根本没用。你们中的任何人都可以提出解决方案!
提前10倍答案 0 :(得分:3)
您需要链接器的--whole-archive
选项来提取所有静态存档:
gcc -shared -o libwhatever.so -Wl,--whole-archive -lstatic -Wl,--no-whole-archive
需要-Wl
因为--whole-archive
是链接器选项。
为了做到这一点,libstatic.a中的代码需要正确编译才能在共享对象中使用(即在需要的平台上使用-fpic
)。