繁体   English   中英

使用未解析的符号链接静态库

[英]Linking against static library with unresolved symbols

我有一个静态库libA.a,其中包含未解析的符号(它们在另一个静态库libA_dep.a中也可用)

我创建了另一个与libA.a链接的共享库libB.so

当用户将程序链接到libB.so时,她还需要链接libA_dep.a,否则会有未解析的符号。 出于许可原因,我无法将libA_dep.a释放给用户。 有办法解决此问题吗? (例如,将libB.so与libA_dep.a链接,并告诉链接器将这些符号放入.so中)

您可以执行以下操作,但这将需要大量工作:

创建一个不包含任何内容的空.cpp进行编译。 然后使用--whole-archive选项将其与静态库链接,以生成共享库。 本质上,这会将静态库转换为.so

最终将要做的是创建一个共享库,其中包含您自己的代码使用的静态库中的所有代码。 然后,将主应用程序与共享库而不是静态库链接。

您将必须提供与客户相同的脚本,以便他们自己可以合法地获取该静态库,并将其转换为与您相同的共享库,从而允许他们运行针对其构建的代码共享库版本。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM