【发布时间】:2019-02-11 09:30:24
【问题描述】:
我有一个 24MB 的 swig 生成的 C++ 代码文件,将近 5,00,000 行代码。将编译器优化级别设置为 xO0 时,我能够编译它,但一旦我添加任何其他 C++ 编译器标志(如 xprofile ...),就会失败。我正在使用 Solaris Studio 12.3 C++ 编译器。
以下是控制台错误:
Element size (in bytes): 48
Table size (in elements): 2560000
Table maximum size: 134217727
Table size increment: 5000
Bytes written to disk: 0
Expansions required: 9
Segments used: 1
Max Segments used: 1
Max Segment offset: 134217727
Segment offset size:: 27
Resizes made: 0
Copies due to expansions: 4
Reset requests: 0
Allocation requests: 2827527
Deallocation requests: 267537
Allocated element count: 4086
Free element count: 2555914
Unused element count: 0
Free list size (elements): 0
ir2hf:错误:内存不足
提前致谢。
【问题讨论】:
-
抱歉,我的魔杖不起作用,我怀疑其他人的也一样。要么在主机上安装更多内存,要么(如果在虚拟机中运行)为虚拟机分配更多内存。如果编译器在使用某些选项时内存不足 - 编译级别是一个选项 - 这是一个公平的迹象,它需要更多内存才能工作。通常没有办法让编译器用比它需要的更少的内存来做事情。因此,您可以为其提供更多可用内存。要么,要么编辑文件并从中创建一组较小的文件,然后分别编译。
-
我的水晶球告诉你试试这个:以 root 身份:
usermod -K defaultpriv=basic,sys_resource <userid>,然后以用户身份:ulimit -d unlimited -
我不想把它变成更小的文件,因为它是自动生成的文件。
-
12.3 已经过时了。 IIRC,当时这些工具还是 32 位的,所以他们不能使用超过 4G 的内存。您可能需要更新的编译器。
标签: c++ compiler-errors solaris-10 solaris-studio