1

我在 Solaris 中有一些 32 位库文件(.a 文件)。我正在将我的应用程序移植到 64 位 Linux 环境。有没有办法将 32 位库转换为 64 位,或者我应该以 64 位重新生成库?

4

2 回答 2

3

这不仅仅是 32 位与 64 位的问题。这也是 Solaris 与 Linux 的问题。这是两个具有不同调用约定和不同 ABI 的操作系统。这意味着诸如数据类型的大小可以不同,编译器将内容放入寄存器和堆栈中以执行函数调用的方式不同,系统调用的完成方式也不同,等等。

在某些情况下,可能可以按照您想要的方式转换静态库,但您需要自己编写工具。从源代码编译更容易,更可靠,而且无论如何您都需要能够随意做一些事情(否则您无法轻松解决库中的问题,例如安全问题)。

于 2012-06-05T08:10:04.517 回答
2

不; 您必须将它们重新编译为 64 位,因为在编译过程中会丢失许多必要的信息。

祝你好运。

于 2012-06-05T07:43:35.060 回答