GNU/Linux >> Znalost Linux >  >> Linux

C++11:Interní chyba kompilátoru g++-4.7

Zdá se, že váš program vyžaduje nepřiměřené množství paměti (možná kvůli příliš velkému počtu rozšíření šablon).

Použití aktuálního g++-trunk :

gcc version 4.8.0 20121026 (experimental) [trunk revision 192860] (GCC) 

s následujícími limity zsh:

   % limit          
   cputime         unlimited
   filesize        unlimited
   datasize        15000MB
   stacksize       8MB
   coredumpsize    400MB
   memoryuse       15000MB
   maxproc         128166
   descriptors     1024
   memorylocked    64kB
   addressspace    16000MB
   maxfilelocks    unlimited
   sigpending      128166
   msgqueue        819200
   nice            0
   rt_priority     0
   rt_time         unlimited

(toto na Debian/Sid/AMD64 s procesorem intel i3770K a 16Gb RAM)

Dostávám:

  % time g++-trunk -std=gnu++11 andrew.cc -o andrew
  virtual memory exhausted: Cannot allocate memory
  g++-trunk -std=gnu++11 andrew.cc -o andrew :
  108.25s user 3.28s system 89% cpu 2:03.98 total

Zdá se tedy, že rozšíření šablony vyžaduje tolik paměti, že programování není rozumné.

Nejsem si jistý, zda to bude přijato jako chyba GCC. Je známo, že rozšíření maker pro šablony C++ je dokončeno Turingem a vy prostě narazíte na zeď. A kmen GCC skutečně hlásí fatální, ale pochopitelnou chybu.

Morálka příběhu by mohla spočívat v tom, že vhodně setrlimit(2) (s limity kompatibilními s vaším systémem a hardwarem), možná pomocí limit zsh vestavěný nebo ulimit vestavěný bash.


Linux
  1. CHYBA:V interním fondu zdrojů není dostatek systémové paměti pro spuštění tohoto dotazu

  2. Co je to 500 interní chyba serveru

  3. struct sigaction incomplete error

  1. gcc -O2 vs. chyba bez příčin

  2. Chyba kompilace libgcc xgcc

  3. configure:error:v $PATH nebyl nalezen žádný přijatelný kompilátor jazyka C

  1. Chyba konfigurace:v $PATH nebyl nalezen žádný přijatelný kompilátor jazyka C

  2. Jak ovlivní chyba jednobitové paměti Linux?

  3. Jak získám upozornění na chyby ECC v Linuxu?