Un ejemplo del horror de c++ para compila en comparación con c:
Tomemos primero en c:
#include <stdio.h>
int main(int argc,char**argv)
{
printf("Hola Mundo!!!\n");
return 0;
}
Su compilación:
time gcc main.c -o a
real 0m0,059s
user 0m0,039s
sys 0m0,019s
Ahora c++:
#include <iostream>
int main(int argc,const char**argv)
{
std::cout << "Hola Mundo!!!" << std::endl;
return 0;
}
Su salida:
time g++ main.cpp -o b
real 0m0,563s
user 0m0,516s
sys 0m0,041s
Cómo se ve, son solo unos hola mundo, con un 500% de diferencia en sus compilaciones…
Con la flag -static:
time gcc main.c -o a -static
real 0m0,118s
user 0m0,081s
sys 0m0,035s
time g++ main.cpp -o b -static
real 0m1,072s
user 0m0,603s
sys 0m0,168s
La diferencia es del 1000% !!!
Y, hay de la memoria (el a es con c, y el b con c++)
ll -h
total 3,2M
-rwxr-xr-x 1 marco marco 813K nov 13 23:02 a
-rwxr-xr-x 1 marco marco 2,4M nov 13 23:02 b
-rw-r--r-- 1 marco marco 92 nov 13 22:55 main.c
-rw-r--r-- 1 marco marco 115 nov 13 22:55 main.cpp
En caso de que sean dinámicos…
ldd a
linux-vdso.so.1 (0x00007f60d38b6000)
libc.so.6 => /usr/lib/libc.so.6 (0x00007f60d3600000)
/lib64/ld-linux-x86-64.so.2 => /usr/lib64/ld-linux-x86-64.so.2 (0x00007f60d38b8000)
ldd b
linux-vdso.so.1 (0x00007f1bd905c000)
libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x00007f1bd8c00000)
libm.so.6 => /usr/lib/libm.so.6 (0x00007f1bd8ef4000)
libgcc_s.so.1 => /usr/lib/libgcc_s.so.1 (0x00007f1bd8ec7000)
libc.so.6 => /usr/lib/libc.so.6 (0x00007f1bd8800000)
/lib64/ld-linux-x86-64.so.2 => /usr/lib64/ld-linux-x86-64.so.2 (0x00007f1bd905e000)
Conclusión, c++ es muchísimo más complicado y lento que c. Cuando un programa está en c++, y solo está en AUR, ahí si que te enojas. Es horrible. Y, la mayoría de los progamas están en c++ en lugar de c (el qué uso yo).