c++ - 目标文件平台独立吗?

标签 c++ c operating-system

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

最佳答案

没有。一般来说,目标文件格式可能是相同的,例如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

目标代码通常不仅是特定于处理器的,而且是特定于操作系统的,例如,它包含系统调用。


编辑:

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

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

关于c++ - 目标文件平台独立吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2123480/

相关文章:

c++ - 在 C++ 中使用引用和指针有什么意义?

c++ - 为什么 RegOpenKeyEx() 在 Vista 64 位上返回错误代码 2?

c - 仅打印出所需长度的指针

assembly - (汇编 x86 实模式)数据在程序结束时得到 "cut off"?

c - OpenMPI - 不同进程上的相同排名

c++ - 不相交的集合为链表

c++ - C++ Azure 移动库中的更新功能损坏

c++ - #pragma omp parallel num_threads 不工作

c - 当我将像素乘以比例因子时图像变黑

linux-kernel - 远程 gdb 调试不会在断点处停止