【发布时间】:2015-09-10 10:13:14
【问题描述】:
第三方为我提供了一个静态库 (.a) 以在 solaris 站上链接。 我尝试用 sunpro 编译,但在链接步骤失败。
我想问题出在我使用的编译器(而不是 gcc?)或只是它的版本(因为编译器提供的 std lib 可能会从库 AFAIK 预期的版本发生变化,这可能会导致链接步骤出错)。
我怎么知道是哪个编译器用来生成这个库的?有没有一些工具可以做到这一点? sunpro/gcc 中的一些选项或其他什么?
作为提示:我前段时间读到编译器在生成目标文件时使用不同的修饰约定(真的吗?)。尽管如此,"nm --demangle" 命令行仍然可以很好地打印出此静态库中调试符号中的所有函数名称。它是如何工作的 ?如果我的假设没问题,nm 确实有办法解决静态库中使用的约定,不是吗?还是仅仅意味着 lib 是由 GNU gcc 生成的,因为 nm 是 GNU binutils 的一部分?
我离我的工作站不近,所以我不能从链接器复制和粘贴错误输出(暂时不能,但我可以在进一步的编辑中复制它们)
【问题讨论】:
-
你为什么不向提供库的“第三方”询问如何使用它?
-
我问他们。但是他们的支持团队没有回答,不愿意问开发团队,似乎......:/
标签: linker build-process solaris