当前位置:  开发笔记 > 编程语言 > 正文

目标文件平台是否独立?

如何解决《目标文件平台是否独立?》经验,为你挑选了3个好方法。

是否可以在一个平台上编译程序并与其他平台链接?对象文件包含什么?我们可以将可执行文件脱钩以生成目标文件吗?



1> Richard Penn..:

不可以.一般来说,目标文件格式可能相同,例如ELF,但目标文件的内容因系统而异.

目标文件包含以下内容:

Object code that implements the desired functionality
A symbol table that can be used to resolve references
Relocation information to allow the linker to locate the object code in memory
Debugging information

目标代码通常不仅是处理器特定的,而且例如,如果它包含系统调用,则还特定于OS.


编辑:

Is it possible to compile program on one platform and link with other ?

绝对.如果使用交叉编译器.此编译器专门针对平台并生成与目标平台兼容的目标文件(和程序).因此,您可以使用X86 Linux系统,例如,使用适当的交叉编译器为基于powerpc或ARM的系统制作程序.我这样做是在这里.



2> jason..:

是否可以在一个平台上编译程序并与其他平台链接?

一般来说,没有.目标文件特定于编译器.一些编译器吐出COFF,其他编译器吐出ELF等.最重要的是,你必须担心调用约定,系统调用等.这是依赖于平台的.

对象文件包含什么?

符号表,代码,重定位,链接和调试信息.

如果您所追求的是可移植性,那么编写可移植的C/C++并让特定于平台的兼容编译器完成工作.


我认为我不会说交叉编译是危险的.很少有iPhone应用程序直接在iPhone上编译.或Wii应用程序.;-)
@CrazyJugglerDrummer:我的观点完全正确.交叉编译是一项非常普遍和安全的事情.

3> abc..:

在实践中,没有.有几件事必须是相同的: - OS接口(相同的系统调用) - 数据的内存布局(字节序,结构填充等) - 调用约定 - 目标文件格式(例如ELF在Linux上非常标准)

查找ABI以获取更多信息.

推荐阅读
Chloemw
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有