【发布时间】:2024-04-29 07:05:02
【问题描述】:
这实际上可能是一个荒谬的问题,但是关于编译器/编译的内容太多了,我不明白。我知道cross compiling, cross-native compiling, etc. 的概念但是,我不知道什么适用于我的场景:
我想做的就是这个。
假设我有两台具有不同硬件的计算机,A 和 B。
假设 A 和 B 我确定的唯一相似之处是:
- 两者都有一些能够进行 64 位计算的 Intel 处理器。
- 两者都运行 Windows 10,因此可以通过其他方式(例如 WSL)访问 Linux。
- A 和 B 都具有编译(任意)代码所需的所有程序。
假设我也有对 A 的管理权限(即我可以做/运行/安装任何我想做的事情/在它上面)。 不是B的情况。
此外,(这可能无关紧要),A 可以物理访问(如果需要,可以远程访问)。 B只能远程访问(通过 SSH、RDP 等)
现在说我想用一些编译器为 A 上的硬件编译一些任意复杂的 C/C++ 代码专门优化。例如,如果我使用gcc on A,我相信-march=native 可以做到这一点。
但是,如果说 A 是特殊的,它的处理能力不能“浪费”在编译上,因为它有更重要的任务要做。换句话说,我确实不想经历编译onA的耗时耗力的过程。
相反,我想为 A on B 进行此编译。
我怎样才能获得与 "-march=native" 编译完成的最终结果on A(如果 gcc 被使用)?换句话说,我如何在 B 上为A 上的硬件编译精确 优化的代码?
对于gcc,是否像finding the equivalent flags for -march=native on A 然后在B 上运行execute?如果是这样,有没有办法简化这个过程,如果没有,怎么做(如果有的话?)。
这个过程可以用compilers other than gcc(即Visual C++和Intel C++编译器)完成吗?
【问题讨论】:
-
如果两个系统具有相同类型的 CPU 并运行相同的操作系统,那么您不需要交叉编译,因为两个系统的目标是相同的。如果您想要针对目标 CPU 的 变体 进行优化,可以使用
-march(和其他 optimization flags and options)指定它。
标签: gcc compilation cross-compiling compiler-optimization icc