首页 > 解决方案 > Linux 64bits:使用 cmake 交叉编译 32bits 目标

问题描述

我在 Linux 64bits 中使用gcc + cmake,我的编译目标是 Linux 32bits。

所以我添加-m32到我的CMAKE_C_FLAGS中。

但随后cmake失败并显示以下消息:The C compiler "/usr/bin/gcc" is not able to compile a simple test program.

当然,这是因为 32 位可执行文件无法在 64 位架构上运行。

我查看了交叉编译 cmake 的页面,但对于我的需要来说似乎非常复杂。

所以,我的问题:有没有办法使用cmake简单地构建一个 32 位二进制文​​件(exe 或 lib) ?

有关信息,这是我尝试使用环境变量的方法:

  1. 添加`${myflag}`CMAKE_C_FLAGS
  2. myflag设置为空。
  3. 调用cmake生成一个 makefile(这样它会成功检查编译器)
  4. 将我的标志设置为-m32.
  5. 调用make(所以它将使用我的 -m32 选项编译

但似乎gcc不评估用户环境变量。

标签: linuxgcccmakecross-compiling32bit-64bit

解决方案


推荐阅读