gpt4 book ai didi

c++ - ld: fatal error :分配内存失败

转载 作者:搜寻专家 更新时间:2023-10-31 00:31:39 25 4
gpt4 key购买 nike

我正在通过 CMake 构建第 3 方应用程序,并将 -DCMAKE_BUILD_TYPE=MinSizeRel 传递给 CMake 以尝试解决此问题,但没有成功。

我总是在链接时遇到错误。

/usr/lib/gcc/armv7a-hardfloat-linux-gnueabi/4.9.3/../../../../armv7a-hardfloat-linux-gnueabi/bin/ld: fatal error: clientserver: mmap: failed to allocate 791230396 bytes for output file: Cannot allocate memory

构建它的 PC 具有 1gb RAM 和 6gb SWAP。事实证明,尝试释放那么多物理 ram 很困难,那么有没有办法让链接器使用 SWAP 或限制它使用的内容?

我也切换到 ld.gold 只是为了看看它是否有任何好处,但仍然没有运气。不幸的是,添加更多 RAM 不是一种选择。

最佳答案

这不是理想的解决方案,但查阅 ld 的帮助手册和几天的一些实验发现了我自己的解决方案。

我将/usr/bin/ld 重命名为/usr/bin/ld.old(最终是 ld.gold 的符号链接(symbolic link)),然后我创建了一个名为/usr/bin/ld 的 shell 脚本,它简单地称为/usr/bin/ld.old 并强制通过一些额外的参数。

--no-map-whole-file --no-keep-memory --no-keep-files-mapped

这解决了我的问题,这与 32/64 位分配无关,而是链接器无法找到足够空间的事实。是的,上面的选项增加了 I/O 使用而不是内存,但事实仍然是它确实有效。

关于c++ - ld: fatal error :分配内存失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33551473/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com