linux - 是否可以在 Linux 上为其他平台创建二进制文件?

标签 linux gcc cross-compiling

是否可以在 Linux 上创建其他平台的二进制文件?假设我有一个可以使用 gcc 编译为 .o 文件的程序,但是我们可以使用它来输出可以在 Windows 上运行的 exe 吗?

最佳答案

简短版: 是的你可以。 这称为交叉编译,使用此关键字在 google 上进行的任何搜索都会给您足够的结果。

现在是现实: 在两个平台上运行即使是相对较小的 c/c++ 代码也需要相当大的努力。 API、用户界面、调用约定、对齐等方面的差异是常见的做法。 幸运的是,有很多跨平台工具可以为您提供帮助。 Google for Qt,一个跨平台的用户界面库。或者随时随地使用 Boost。 您可能需要添加许多 #ifdef __WINDOWS__#ifdef __UNIX__(这些语句可能不正确)来为每个平台指定单独的代码行。

因此,为这两个平台编写代码并不是一件容易的事,并且根据您编写的软件的复杂性,需要对一般操作系统,尤其是这两个操作系统有深入的了解。

换句话说:没有工具可以从您的 .o 中生成 .exe,就像那样。

祝你好运!

~罗布

关于linux - 是否可以在 Linux 上为其他平台创建二进制文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1688201/

相关文章:

JavaFX:仅在 Linux 上找不到或加载主类

linux - Win32 InterlockedIncrement 和 InterlockedExchange 是跨进程的原子吗?

c++ - 使用 PyTorch、HElib 和 OpenCV 编译 C++ 程序时出现问题

c++ - 为在 BeagleBone Black 上运行的 ARM 编译时,应用程序 boost::thread 卡在互斥锁上

linux - Zynq 的交叉编译内核模块

linux - 如何检测文件是 XLS 还是 XLSX

linux - 每当读取、写入文件时记录

linux - 如何使用 linux amd64、cmake 和 g++ 交叉编译 linux x86?

linux - 构建opencv库不会生成 "libopencv_java244.so"

c++ - Boost.Exception 符号出现在 'nm' 输出中是什么意思?它们会导致 ODR 违规吗?