首先,我想声明这个问题与学校/家庭作业有关。
假设计算机 CP1 和 CP2 共享相同的操作系统和机器语言。如果 C 程序在 CP1 上编译,为了将其移动到 CP2,是否需要传输源代码并在 CP2 上重新编译,或者只是传输目标文件。
我的直觉答案是目标文件就足够了。C 代码由编译器翻译成汇编,并由汇编器汇编成机器代码。因为该架构共享相同的机器代码和操作系统,所以我认为没有问题。
但我越想,我就越感到困惑。
我的问题是:
a)由于它指的是目标文件而不是可执行文件,我假设没有链接。在 CP2 上链接时会出现任何问题吗?
b) 如果代码在 CP1 上使用 C11 标准但在 CP2 上唯一的编译器是 C99,这有关系吗?我假设一旦代码被编译/汇编,这无关紧要。
c)问题没有指定共享/动态链接库。所以这只有在程序不依赖 .dll/.so/ .dylib 文件的情况下才会真正起作用,否则 CP2 也需要这些文件。
我觉得有很多陷阱,考虑到这个问题有多模糊,我现在觉得简单地重新编译会更安全。
哈!