在windows中编译linux gcc - windows中的nvcc

问题描述 投票:0回答:1

这是一个有趣的问题,如果回答积极,将使交叉编译变得更加容易。

既然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程序吗?

linux windows gcc nvcc
1个回答
1
投票

阅读gcc手册中有关交叉编译的章节,gcc的架构使得在目标与开发机器不同的情况下设置工具链变得非常容易。

我从来没有走过你描述的确切路线,但我已经在 Windows 下构建了针对 ARM9 嵌入式 Linux 机器的工具链,工作起来就像一个魅力 - 顺便说一句,使用 cygwin。请参阅此处,了解简单的介绍。也非常有用的信息这里

我不会评论关于 nvcc 可以做什么,CUDA 位于我的(长)列表中需要修改的东西......

现在,cl 可以生成 Linux 二进制文件吗? 这个问题的答案是“某种程度上”:只要目标处理器来自 cl 支持的处理器系列,它生成的目标文件就可能不包含任何会抑制其在 Linux 上执行的内容,因为它们会仅包含机器代码。 这就是理论。 然而:

  • 由于 Linux 使用另一种可执行格式,您将需要一个 Windows 托管的链接器来理解 Windows 样式目标文件(afaik,COFF),并将它们链接到 Linux 样式(ELF)可执行文件。 我从未听说过这样的野兽,尽管理论上它可能存在
  • 启动代码(一个围绕主函数的小程序)也会有所不同,需要编写
  • 还有更多,例如图书馆相关问题

所以,实用的答案是否定的,尽管对于无聊的学生来说这可能是一个不错的暑期项目:)

© www.soinside.com 2019 - 2024. All rights reserved.