我正在 Windows 32 位(使用 MSVC++)上用 C++ 开发一个软件,但是因为我希望能够在每个平台上使用我的软件,所以我决定使用 CMake 作为我的构建生成器。
因此,我仍然只是 CMake 的初学者。从 CMake 教程中,我了解到为了交叉编译代码,首先应该在主机平台上安装一个模拟目标平台的工具链。然后使用此工具链提供的适当目标平台 C 和 C++ 编译器,CMake 将能够生成 makefile 等。
现在,我想在 Win32 平台上为 Linux 平台(GNU/Linux)构建我的代码。我尝试使用 CMake 结合 Cygwin 并使用 gcc 和 g++ 作为编译器来执行上述过程。它构建良好,创建了 makefile,当我在 Cygwin 终端中发出“make”时,生成的 makefile 被“制作”了。现在我有了一个我希望能在 Linux 平台上运行的可执行文件。但在 Linux 上出现错误:bash 无法执行二进制文件。
使用命令文件executablename,我意识到上述程序生成的可执行文件是PE32类型的,仅适用于Windows。
现在我的问题是:我对使用 cmake 的跨平台构建过程的理解是否正确?或者我应该在 windows 下使用另一个 Linux 工具链来获取 Linux ELF 可执行文件?您会想到哪些工具链可以满足我的需求?
非常感谢
塞塔雷