我想把我的图书馆链接到图书馆。我想静态链接,这样当我交付xxx时,我不需要打包yyy和xxx。我有两个版本的yyy由第三方提供: libyyy.so和libyyyln.a。所以这里我去链接到-lyyyln。
链接时不会收到任何错误消息。当我执行"ldd libxxx.so“时,对yyyln的依赖没有显示出来。但是"ldd -r libxxx.so“表明来自yyy的符号没有被解析。"nm libxxx.so“显示来自yyy的这些符号是UNDEF。
那我错过了什么?
Edit1:我设法让它最终与"-l /fullpath/libyyyln.a“一起工作。
发布于 2009-05-13 22:45:53
您希望将-Bstatic放在您希望使用的静态链接库的前面。在Solaris链接器和图书馆指南周围寻找更多信息。
发布于 2009-05-17 07:32:02
你可以在Studio论坛上问这个问题,直接从Studio编译器小组那里得到答案
Sun Studio论坛 (用于C、C++、Fortran和工具)
发布于 2009-05-13 19:24:28
我想你是在利用gcc。默认情况下,如果可以的话,gcc将使用共享库(.so),因此您必须强制它与选项-static静态链接。
编辑:对不起,我以为sunstudio是您要链接的库的名称,我忘了sunstudio包含了一个编译器。不过,sun工作室也必须有类似的选择。
https://stackoverflow.com/questions/859867
复制相似问题