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