【问题标题】:Compile C++ as 64Bit with CLion使用 CLion 将 C++ 编译为 64 位
【发布时间】:2016-02-28 15:53:34
【问题描述】:

我有一个运行内存消耗算法的 c++ 应用程序。

它因错误而崩溃:在分配的内存达到大约 2GB 后抛出一个 'std::bad_alloc' 实例后调用终止

我想将它编译为 64Bit,以便它可以从我的 64Bit/8GB Ram 机器上分配更多内存。

如何实现?

我正在使用 CLion,使用 CMake 构建并使用 mingw 版本: mingw-w64\i686-4.8.3-posix-dwarf-rt_v3-rev2 顺便说一句-wingw 安装在C:\Program Files (x86)\mingw-w64 下,这与问题有关吗?

我一直在看这里: Detecting 64bit compile in C 并且(并不奇怪)我可以看到我的应用程序没有__x86_64__

【问题讨论】:

  • -m64 不可以吗?
  • 嗯,我不知道我应该把它放在哪里?
  • 作为编译器调用字符串的参数。 CMake 定义中的某处。
  • 大约一个小时后检查并告诉你
  • 如果您可以在某些 POSIX 系统上编译和运行您的应用程序,请尝试使用valgrind。你可能有一些memory leak。如果可能的话,用GCC 5编译它并在调试阶段使用一些-fsanitize=选项(除了-Wall -Wextra -g

标签: c++ c++11 cmake mingw-w64 clion


【解决方案1】:

按照 OP 的建议,发布我的评论作为答案:为此,您需要将 -m64 选项传递给编译器/链接器。

【讨论】:

    【解决方案2】:

    你必须告诉 CLion 使用 MinGW-w64 来构建你的 CMake 项目。

    您不必更改 CMake 项目配置。如果您可以轻松地告诉您的编译器要为哪个架构构建或使用适当的编译器 (MinGW-w64),那么通过固定的机器架构限制您的 CMake 项目会适得其反。

    这篇文章向您展示了如何做到这一点:

    https://dev.my-gate.net/2014/09/15/how-to-use-mingw-w64-with-clion/

    摘自这篇文章:

    以下是使其工作的几个步骤:

    1. 在某处安装您的 MinGW-w64 编译器。
    2. 创建一个路径为[MinGW-w64 dir]/include/_mingw.h的文件,内容如下所示。
    3. 将 CLion 指向您的 [MinGW-w64 目录] 并观察 CLion 如何 识别您的 MinGW 设置。

    构建可执行文件后,您可以使用 unix 命令file 检查其架构,因为您使用的是 mingw,所以您应该可以使用该命令。

    【讨论】:

    • 能否请您将该博客中的相关内容发布到您的答案中,以防博客消失?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-06-20
    • 1970-01-01
    • 2020-12-10
    • 1970-01-01
    • 2011-03-04
    • 2018-08-04
    • 1970-01-01
    相关资源
    最近更新 更多