这是一个有趣的问题,如果得到肯定的回答,将使交叉编译变得更加容易。
由于gcc是用C++编写的,是否可以在Windows MinGW G++或VSC++编译器上重新编译Linux gcc编译器,以便生成的Windows可执行文件能够将c代码编译为linux程序?
如果是这样,需要做什么?
为了简单起见,这就是我想做的。
mingw32-g++ gcc.cpp -o gcc.exe
该命令可能不起作用,因为如果那么简单的话,以前可能已经完成了。我想问的是这个概念是否可行。
编辑:感谢并将问题扩展到 NVCC
fvu 能够回答 gcc 编译器的问题(下次请使用回答按钮),所以如果你有同样的问题,你可以感谢他(或她)。
作为问题的扩展,是否可以编辑或重新编译 nvcc 或其使用的内容,以便 nvcc.exe 可以从 CUDA C 代码创建 Linux 程序?我读到 nvcc 的 Windows 变体只能使用 Visual Studio cl.exe,而不能使用 MinGW 或 CygWin。
是否可以使用 cl.exe 创建 Linux 程序?如果是这样,是否可以使用 nvcc.exe 生成 linux 程序?
阅读gcc手册中有关交叉编译的章节,gcc的架构使得在目标与开发机器不同的情况下设置工具链变得非常容易。
我从来没有走过你描述的确切路线,但我已经在 Windows 下构建了针对 ARM9 嵌入式 Linux 机器的工具链,工作起来就像一个魅力 - 顺便说一句,使用 cygwin。看here http://wiki.osdev.org/GCC_Cross-Compiler进行温和的介绍。也是非常有用的信息here http://gcc.gnu.org/wiki/Building_Cross_Toolchains_with_gcc.
我不会评论关于 nvcc 可以做什么,CUDA 在我的(长)列表中的某个地方可以修改......
现在,cl 可以生成 Linux 二进制文件吗?这个问题的答案是“某种程度上”:只要目标处理器来自 cl 支持的处理器系列,它生成的目标文件就可能不包含任何会抑制其在 Linux 上执行的内容,因为它们会仅包含机器代码。这就是理论。然而:
- 由于 Linux 使用另一种可执行格式,您将需要一个 Windows 托管的链接器来理解 Windows 样式目标文件(afaik,COFF),并将它们链接到 Linux 样式(ELF)可执行文件。我从未听说过这样的野兽,尽管理论上它可能存在
- 启动代码(一个围绕主函数的小程序)也会有所不同,需要编写
- 还有更多,例如与图书馆相关的问题
So, the 实际的答案是否定的,尽管对于无聊的学生来说这可能是一个不错的暑期项目:)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)