【发布时间】:2014-03-26 21:35:53
【问题描述】:
这是一个有趣的问题,如果得到肯定的回答,将使交叉编译变得容易得多。
由于 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 手册中关于交叉编译的章节。从来没有走你描述的确切路线,但我已经在 Windows 下构建了针对 ARM9 嵌入式 Linux 机器的工具链,就像一个魅力 - 使用 cygwin btw。看here 进行温和的介绍。还有very useful info here
-
@fvu 非常感谢!您提供的链接甚至有一个可下载的编译器可供使用。请参阅问题的编辑以了解此问题的扩展。
-
不客气 - 因为我不确定是否符合您的要求,所以我刚刚发表了评论。
-
afaik,您可以只创建已编译的 CUDA 内核(PTX - 这是 CUDA 运行时部分的字节码;
nvcc -ptx your.cu),然后使用 gcc 编写和编译 cuda 主机代码,并带有可加载的 ptx (通过cuModuleLoad+cuModuleGetFunctionexample 加载ptx)。有关于分离设备和主机代码的cuda手册:cuda-compiler-driver-nvcc using-separate-compilation-in-cuda docs.nvidia.com/cuda/cuda-compiler-driver-nvcc/… -
奇怪,到目前为止我还以为已经有适用于 Windows 的 GCC 版本。可能我听说刚刚在 cygwin 中部署 GCC
标签: linux windows gcc compiler-construction nvcc