GNU/Linux >> Belajar Linux >  >> Linux

C++11:kesalahan kompiler internal g++-4.7

Tampaknya program Anda memerlukan jumlah memori yang tidak masuk akal (mungkin karena terlalu banyak ekspansi template).

Menggunakan g++-trunk terbaru :

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

dengan batas zsh berikut:

   % 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

(ini pada Debian/Sid/AMD64 dengan prosesor intel i3770K &RAM 16Gb)

Saya mendapatkan:

  % 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

Jadi tampaknya ekspansi template memerlukan begitu banyak memori sehingga program Anda tidak masuk akal.

Saya tidak yakin apakah ini akan diterima sebagai bug GCC. Ekspansi makro untuk template C++ dikenal sebagai Turing selesai dan Anda baru saja menabrak dinding. Dan batang GCC memang melaporkan kesalahan yang fatal, namun dapat dimengerti.

Moral dari cerita ini mungkin untuk setrlimit(2) dengan tepat (dengan batasan yang kompatibel dengan sistem dan perangkat keras Anda), mungkin menggunakan limit zsh bawaan atau ulimit bash bawaan.


Linux
  1. Kesalahan konfigurasi:tidak ditemukan kompiler C yang dapat diterima di $PATH

  2. 15 Opsi Baris Perintah Kompilator GCC yang Paling Sering Digunakan

  3. struct sigaction kesalahan tidak lengkap

  1. gcc -O2 vs. tanpa penyebab kesalahan

  2. configure:error:tidak ada kompiler C yang dapat diterima ditemukan di $PATH

  3. Bagaimana kesalahan memori bit tunggal memengaruhi Linux?

  1. GALAT:Memori Sistem Tidak Memadai di Resource Pool Internal untuk Menjalankan Kueri ini

  2. Memecahkan masalah kesalahan server internal WordPress

  3. Apa itu 500 Internal Server Error