C和C .lib文件是否可移植?
发布时间:2020-12-16 10:26:10 所属栏目:百科 来源:网络整理
导读:假设编译的代码实际上是可移植的(只使用标准库或其他东西),我可以在多个平台上为我的项目使用相同的.lib,还是只能在他们编译的平台上运行? 我正在将我的C项目从Windows移植到Linux,我使用了一些第三方库,包括openAL,FreeType和FreeImage,我想知道是否必须获
假设编译的代码实际上是可移植的(只使用标准库或其他东西),我可以在多个平台上为我的项目使用相同的.lib,还是只能在他们编译的平台上运行?
我正在将我的C项目从Windows移植到Linux,我使用了一些第三方库,包括openAL,FreeType和FreeImage,我想知道是否必须获取/重新编译新的库文件. 解决方法
Windows和Linux上的动态链接器以完全不同的方式工作.在Linux上,链接器将使用elf格式的.so文件.然而,Windows使用.lib和.dll文件,这些文件采用不同的,不兼容的格式.
即使您要找到解决方法,两个操作系统之间的默认调用约定也是不同的. C函数调用将参数放在不同的寄存器中,因此如果没有编译器使用自定义调用约定就不可能在这些lib文件中调用函数,但是这会阻止任何其他代码调用您的库. Wine Project创建了一个兼容层,允许Windows二进制文件调用为Linux编译的库,但是对这样的层存在显着的性能和复杂性损失. 简而言之,几乎在每种情况下,最好分别为两个操作系统重新编译项目.你提到的库(afaik)都可用于Linux,所以移植应该是轻而易举的. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |