C和C .lib文件是否可移植?

C和C .lib文件是否可移植?,第1张

概述假设编译的代码实际上是可移植的(只使用标准库或其他东西),我可以在多个平台上为我的项目使用相同的.lib,还是只能在他们编译的平台上运行? 我正在将我的C项目从Windows移植到Linux,我使用了一些第三方库,包括openAL,FreeType和FreeImage,我想知道是否必须获取/重新编译新的库文件. Windows和Linux上的动态链接器以完全不同的方式工作.在Linux上,链接器将 假设编译的代码实际上是可移植的(只使用标准库或其他东西),我可以在多个平台上为我的项目使用相同的.lib,还是只能在他们编译的平台上运行?

我正在将我的C项目从Windows移植到Linux,我使用了一些第三方库,包括openAL,FreeType和FreeImage,我想知道是否必须获取/重新编译新的库文件.

解决方法 windows和linux上的动态链接器以完全不同的方式工作.在linux上,链接器将使用elf格式的.so文件.然而,windows使用.lib和.dll文件,这些文件采用不同的,不兼容的格式.

即使您要找到解决方法,两个 *** 作系统之间的默认调用约定也是不同的. C函数调用将参数放在不同的寄存器中,因此如果没有编译器使用自定义调用约定就不可能在这些lib文件中调用函数,但是这会阻止任何其他代码调用您的库.

Wine Project创建了一个兼容层,允许windows二进制文件调用为linux编译的库,但是对这样的层存在显着的性能和复杂性损失.

简而言之,几乎在每种情况下,最好分别为两个 *** 作系统重新编译项目.你提到的库(afaik)都可用于linux,所以移植应该是轻而易举的.

总结

以上是内存溢出为你收集整理的C和C .lib文件是否可移植?全部内容,希望文章能够帮你解决C和C .lib文件是否可移植?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/1220108.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-05
下一篇2022-06-05

发表评论

登录后才能评论

评论列表(0条)

    保存