我在Solaris中有一些32位库文件(.a文件)。我将我的应用程序移植到64位Linux环境。有没有办法将32位库转换为64位,还是应该用64位重新生成库?
答案 0 :(得分:3)
这不仅仅是32位与64位的问题。这也是Solaris与Linux的问题。这两个操作系统具有不同的调用约定和不同的ABI。这意味着数据类型的大小可能会有所不同,编译器将内容放入寄存器和堆栈中进行函数调用的方式不同,系统调用的方式也不同等等。
在某些情况下,可能会以您希望的方式转换静态库,但您需要自己编写工具。从源代码编译更简单,更可靠,也是您无论如何都需要能够随意执行的操作(否则您无法轻松修复库中的问题,例如安全问题)。
答案 1 :(得分:2)
没有;你必须为64位重新编译它们,因为在编译期间会丢失许多必要的信息。
祝你好运。