0

我正在尝试将我的图书馆 xxx 链接到图书馆 yyy。我想静态链接,这样我在交付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”一起工作

4

5 回答 5

3

你想把-Bstatic你想要静态链接的库放在前面。深入了解 Solaris 链接器和库指南以获取更多信息。

于 2009-05-13T22:45:53.020 回答
1

您可以在 Sun Studio 论坛上提出这个问题,并直接从 Sun Studio 编译器团队获得答案

Sun Studio 论坛(用于 C、C++、Fortran 和工具)

于 2009-05-17T07:32:02.847 回答
0

看看这是否有帮助: http: //fortran-2000.com/ArnaudRecipes/sharedlib.html

于 2009-05-13T19:43:57.623 回答
0

我假设你正在使用 gcc。默认情况下,如果可以,gcc 将使用共享库 (.so),因此您必须使用 -static 选项强制它静态链接。

编辑:对不起,我以为 sunstudio 是您要链接的库的名称,我忘记了 Sun Studio 包含一个编译器。不过,sun studio 必须有类似的选择。

于 2009-05-13T19:24:28.763 回答
0

我设法让它最终与“-l /fullpath/libyyyln.a”一起工作

我玩弄 -Bstatic 和 -Bdynamic 没有成功。解决方案真的和上面写的一样简单。我早该想到的。

于 2009-05-27T20:19:08.673 回答